+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Facebook опублікував власну реалізацію обробника нестачі пам'яті в системі (OOM, Out Of Memory)

Facebook опублікував власну реалізацію обробника нестачі пам'яті в системі (OOM, Out Of Memory)

Facebook опублікував власну реалізацію обробника нестачі пам'яті в системі (OOM, Out Of Memory), що працює у просторі користувача. Як і представлений на початку місяця проект earlyoom, розробка Facebook націлена на оперативніше і вибіркове завершення роботи процесів, що споживають занадто багато пам'яті, на стадії до спрацювання OOM-обробника ядра Linux. Код oomd написаний мовою C++ та постачається під ліцензією GPLv2. Oomd вже використовується в інфраструктурі Facebook і добре зарекомендував себе при промислових навантаженнях (зокрема, проект дозволив майже повністю позбавитися виникнення на серверах тривалих livelock-блокувань).

Проект oomd надає досить гнучкі налаштування, що дозволяють визначати процеси, які не слід. завершувати за будь-яких умов (наприклад, sshd) або, навпаки, визначити другорядні процеси, які можна завершити без особливої ​​шкоди. У прив'язці до певних процесів або всіх процесів можна визначати параметри інтенсивності зростання споживання пам'яті і порогові значення, при перевищенні яких за умов нестачі пам'яті допускається примусове завершення роботи процесів. Дозволяється створити різні групи процесів, до яких можуть застосовуватися різні правила.

Підтримується підключення різних модулів для визначення нестачі пам'яті (oomdetector) та завершення процесів (oomkiller). У процесі роботи для моніторингу за споживанням ресурсів використовуються cgroup2 та підсистема PSI (Pressure Stall Information), кілька днів тому запропонована для включення до складу ядра Linux. PSI розроблений у Facebook і дозволяє проаналізувати інформацію про час очікування на отримання різних апаратних ресурсів для певних завдань або наборів процесів у cgroup.

У контексті OOM підсистема PSI дозволяє виявити початок виникнення затримок через брак ресурсів на стадії, коли система ще не перебуває в критичному стані і не починає інтенсивно урізати кеш і витісняти дані в розділ підкачування. Крім оцінки навантаження на систему пам'яті в PSI також враховується навантаження на CPU та введення/виведення. По суті, PSI можна розглядати як більш інформативний індикатор перевантаження і механізм для відстеження зміни навантаження в часі, що більш точно відображає реальну ситуацію в порівнянні з метрикою LA (Load Average).

Проведені синтетичні тести показали, що реалізація OOM-обробника в просторі користувача продемонструвала більш високу ефективність та надійність порівняно зі штатним OOM killer ядра Linux. Нижче на графіки наведено порівняння oomd та OOM killer при тестуванні поступового запиту процесом 2 Гб ОЗУ протягом 120 секунд в умовах нестачі пам'яті (значення вище 120 слід розглядати як поведінку, що призводить до зниження продуктивності).

 

Інші новини

Найкраща ціна