Как отладить медленную гибернацию

У меня есть несколько ПК/ноутбуков, на которых установлена обновленная Ubuntu 20.04 с 64-разрядным ядром 5.4.0-74-generic, предоставляемым репозиториями Ubuntu по умолчанию. Один из них, довольно обычный ПК с процессором Intel i3, требует чуть более 2 минут для перехода в спящий режим с момента обновления с 18.04 до 20.04.

Различные ресурсы, которые я нашел об отладке спящего режима, в основном описывают пробуждение или полный отказ от приостановки, но не приостановку перехода на диск, которая занимает очень много времени. Пробуждение работает нормально и занимает всего несколько секунд. Как я могу выяснить, что занимает так много времени для перехода в спящий режим? Есть ли что-то вроде systemd-analyze blame для гибернации?

Пока что я добавил initcall_debug no_console_suspend к GRUB_CMDLINE_LINUX_DEFAULT в /etc/default/grub и он действительно показывает консоль, однако, ничего не показывается, что объясняет долгое время. Он показывает "Detected Hardware Unit Hang" для сетевого интерфейса. Но это появляется в самом начале гибернации, и я полагаю, что это ожидаемое поведение.

Я использую systemctl hibernate, чтобы инициировать его. Это занимает 2 минуты до выключения, даже если запускать от имени root на консоли без других зарегистрированных пользователей или пользовательских процессов.

0
задан 6 June 2021 в 20:07

1 ответ

Мой совет:

  1. Решите задать вопрос @ askubuntu.com и отнеситесь к этому серьезно ;) Соберите данные, воспроизведите проблемы с минимальными настройками и будьте конкретны.

  2. Убедитесь, что достаточно места для подкачки. Команда free дает количество RAM («Mem») и Swap. Общий объем подкачки должен быть больше, чем общий объем ОЗУ. Я понял, что в какой-то момент добавил ОЗУ, но не стал увеличивать размер раздела подкачки. Редактировать (2021-06-07): Разница в размере составляла ~ 1 ГБ. После увеличения размера гибернация была многократно быстрее, но я все еще думаю, что это был артефакт, вызванный изменением скорости записи SSD, содержащего раздел подкачки. (См. Также следующий пункт.)

  3. Насколько быстрым должен быть режим гибернации? По сути, во время приостановки на диск вся оперативная память записывается на диск. Объем оперативной памяти и скорость записи на диск определяют необходимое время. Я поискал свой раздел подкачки и проверил, сколько времени нужно на его обнуление, используя dd if = / dev / zero . dd сообщил о скорости 108 МБ / с. Запись 7 ГБ заняла ~ 65 секунд. На моем компьютере 8 ГБ. Итак, я должен ожидать, что гибернация займет не меньше минуты.

  4. Попробуйте выполнить отладку , удалив части системы: отсоедините ненужное оборудование. Переход в спящий режим сразу после новой загрузки, с входом в систему или без нее.

  5. Добавьте initcall_debug no_console_suspend в командную строку ядра, как описано в вопросе.

На данный момент, я предполагаю, что причины медленного перехода в спящий режим заключаются в следующем: я добавил ОЗУ (поэтому спящий режим занимает больше времени), я забыл увеличить пространство подкачки, чтобы оно соответствовало добавленному ОЗУ (у меня было 7 ГБ подкачки, но 8 ГБ ОЗУ), и скорость записи SSD со временем снизилась (как минимум в 2 раза).

Дополнительная и рекомендуемая литература:

0
ответ дан 28 July 2021 в 11:31

Другие вопросы по тегам:

Похожие вопросы: