Уровень APM в ноутбуке сбрасывается при выходе из режима ожидания
При изучении причин увеличения количества циклов загрузки жесткого диска я наблюдал, что мой уровень APM сбрасывается при каждом выходе из Suspend на моем ноутбуке Debian Jessie с MATE:
$ sudo smartctl --get=apm /dev/sda
...
APM feature is: Disabled
$ sudo hdparm -I /dev/sda | grep level
Advanced power management level: disabled
$ sudo hdparm -B /dev/sda
/dev/sda:
APM_level = off
После установки ноутбука в Suspend, а затем извлечения его из Suspend, у меня есть следующее:
$ sudo hdparm -I /dev/sda | grep level
Advanced power management level: 128
$ sudo smartctl --get=apm /dev/sda
...
APM level is: 128 (minimum power consumption without standby)
$ sudo hdparm -B /dev/sda
/dev/sda:
APM_level = 128
Я попытался включить параметры APM в /etc/hdparm.conf
, но это не помогло:
...
# -B apm setting
#apm = 255
apm = 255
# -B apm setting when on battery
#apm_battery = 127
apm_battery = 255
...
Затем:
$ sudo /etc/init.d/hdparm restart
Вставив жесткий диск в Suspend и вернув его обратно, я заметил, что уровень APM вернулся к 128.
1 ответ
Вы используете SSD диск? В моем случае управление уровнем звука для жесткого диска установлено по умолчанию в /etc/hdparm.conf
был виновником.
Эти настройки в конечном итоге сделали свое дело для меня:
# quiet # this should be commented out
/dev/disk/by-id/<YOUR_DISK_UUID> {
acoustic = 128
keep_features_over_reset = on
}
После этого мой SSD-накопитель перестал изменять уровень APM при приостановке / возобновлении, а также исправил ошибку SG_IO, возможно, связанную с той же проблемой.
Подробнее о поиске UUID вашего диска и конфигурации hdparm можно узнать здесь: http://forum.havetheknowhow.com/viewtopic.php?t=479
Надеюсь, это поможет!
Я так и не понял первопричину, но смог обойти это, добавив следующее в новый
/etc/systemd/system/tweak_hdparm_apm-resume.service
файл:
[Unit]
Description=Sets APM value to 254
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
User=root
Type=oneshot
ExecStart=/path/to/tweak_hdparm_apm.sh
TimeoutSec=0
StandardOutput=syslog
[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
а затем следующее для моего
tweak_hdparm_apm.sh
запускать при каждом пробуждении:
#!/bin/sh
#
# Something on my Debian laptop keeps setting the APM level to 128 every
# time it comes out of sleep. This script sets the value to 254 for best
# performance and least aggressive APM to conserve the life of the hard
# drive.
# --- Running hdparm -B to get current value
oldvalue=$(/sbin/hdparm -B /dev/sda)
# --- Running hdparm to set new -B value to 254 (APM best/highest I/O performance and least aggressive APM)
/sbin/hdparm -B 254 /dev/sda
newvalue=$(/sbin/hdparm -B /dev/sda)
echo "$(date) Args: ${*} Oldvalue: ${oldvalue} Newvalue: ${newvalue}" >> tweak_hdparm_apm.log
exit ${?}