Всякий раз, когда машина (Linux 4.4.0-38-generic, Ubuntu 16.04) переходит в режим ожидания в ОЗУ, мой жесткий диск Western Digital 2 ТБ Portable USB 3.0 (модель WDBU6Y0020BBK) начинает вращаться и продолжает вращаться бесконечно. Почему диск не переходит в режим сна/ожидания?
Судя по светодиоду на диске, доступ к диску (который выводит его из спящего режима) происходит очень поздно в процедуре перехода в спящий режим: из-за небольшой задержки слышно, как диск раскручивается даже после того, как машина уже перешла в спящий режим (т.е. завершила переход в спящий режим).
Рассматриваемое запоминающее устройство подключено к шине 3, порту 1 ( 3-1
):
$ lsusb | grep Western
Bus 003 Device 002: ID 1058:10b8 Western Digital Technologies, Inc. Elements Portable (WDBU6Y, WDBUZG)
$ lsusb -t | grep -A1 'Bus 03'
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 1: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
Чтобы пролить свет на этот вопрос, я использовал параметры командной строки ядра initcall_debug no_console_suspend ignore_loglevel dyndbg="file suspend.c +p"
и IntelАнализироватьПриостановитьотладочный инструмент для сбора вывода dmesg и ftrace. Первый можно найтиздесьа последний довольно длинный (>340M), но не содержит очевидных ошибок:
$ grep err=[^0] mem_ftrace.txt ; echo $?
1
Более того, проблема, похоже, не связана с модулями драйвера, поскольку повторение процедуры приостановки и возобновления работы sudo modprobe -r uas usb_storage
(позволяющей диску замедлить вращение и перейти в спящий режим) не привело ни к каким изменениям! Диск все равно заработал.
Есть ли какие-нибудь указания, на что обратить внимание и/или что попробовать дальше?
К вашему сведению: я использую инструмент мониторинга (hd-холостой ход), который следит за /proc/diskstats
диском и переводит его в спящий режим (т. е. позволяет ему замедлить вращение) после определенного периода простоя.