Компания 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.01 секунды. При включении в системе штатного режима очистки памяти (image_size=0) время перехода в спящий режим сократилось с 73.22 до 5.36 секунд, а время возвращения из спящего режима практически не изменилось (сократилось с 5.32 до 5.26 секунд)

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

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

©  OpenNet