20.09.2020

Компания Canonical предложила патчи для ускорения активации спящего режима


Компания Canonical предложила в списке рассылки разработчиков ядра Linux набор патчей с реализацией оппортунистической чистки памяти («opportunistic memory reclaim»), позволяющей существенно сократить время перехода в спящий режим. Оптимизация достигается за счёт упреждающего вызова операции высвобождения вторичных структур памяти, которые не содержат уникальных сведений и могут быть динамически восстановлены после возвращения из спящего режима (например, области анонимной памяти и различные кэши страниц памяти). Основная идея в том, что после удаления лишних данных сокращается размер образа памяти для сохранения перед переходом в спящий режим и, соответственно, требуется меньше времени на его запись и чтение с медленного носителя.

По умолчанию при сохранении дампа памяти для спящего режима ядро сохраняет память как есть со всеми кэшами, но предусмотрена штатная возможность высвобождения лишних структур через симуляцию условий нехватки ресурсов на начальной стадии перехода в спящий режим. Данная возможность может быть активирована при помощи параметра «/sys/power/image_size» и приводит к заметному увеличению времени перехода в спящий режим. Canonical предлагает добавить ещё два параметра «/sys/power/mm_reclaim/run» и «/sys/power/mm_reclaim/release», которые позволят вызывать высвобождение лишних структур заблаговременно для того чтобы фактически переход в спящий режим был выполнен как можно быстрее, а возвращение из спящего режима заняло примерно столько же времени, что и при применении уже существующего в ядре параметра «/sys/power/image_size».

Тестирование на системе с 8 ГБ ОЗУ и 8 ГБ разделом подкачки при утилизации 85% памяти показало в настройках по умолчанию (image_size=default) снижение времени перехода в спящий режим с 51.56 до 4.19 секунд при инициировании процесса очистки лишней памяти за 60 секунд до перехода в спящий режим. За счёт сокращения размера сохраняемого образа памяти время восстановления снизилось с 26.34 до 5 секунд. При включении в системе штатного режима очистки лишней памяти (image_size=0) время перехода в спящий режим сократилось с 73.22 до 5.36 секунд, а время возвращения из спящего режима практически не изменилось (сократилось лишь на доли секунды, с 5.32 до 5.26 сек.)

Предложенный метод может быть востребован в ситуациях, когда необходимо очень быстро перейти в спящий режим и имеется возможность заранее предвидеть необходимость такого перехода. Например, в облачных системах низкоприоритетные виртуальные окружения (spot-окружения в Amazon EC2) могут динамически переводиться в спящий режим и высвобождать занимаемую память при росте потребления ресурсов первичными окружениями. При снижении нагрузки на первичные окружения низкоприоритетные окружения возвращаются из спящего режима. При данных условиях для поддержания должного качества сервиса важно сократить до минимума время перехода в спящий режим и выхода из него. Запуск фазы упреждающей очистки может производиться при достижении определённого уровня основной нагрузки, предшествующей уровню, приводящему к заморозке низкоприоритетных окружений.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53119

Добавить комментарий