Уровень 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 ${?}
Другие вопросы по тегам