Компанія 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) можуть динамічно переводитися в сплячий режим і вивільняти пам'ять, що займається, при зростанні споживання ресурсів первинними оточеннями. При зниженні навантаження на первинні оточення низькопріоритетні оточення повертаються зі сплячого режиму. За цих умов підтримки належної якості сервісу важливо скоротити до мінімуму час переходу в сплячий режим і виходу з нього. Запуск фази попереджувальної очистки може здійснюватися при досягненні певного рівня основного навантаження, що передує рівню, що призводить до заморожування низькопріоритетних оточень.

Джерело: opennet.ru

Додати коментар або відгук