Як обчислюється оцінка oom ядра?


12

Подивився на Google і не знайшов нічого, що пояснило б, як proc/<pid>/oom_scoreобчислюється оцінка . Навіщо використовувати цей бал замість того, щоб просто використовувати загальну використану пам'ять?

Відповіді:


18

Дивіться статтю Голдуїна Родрігеса 2009 року щодо впровадження в той час, статтю Джонатана Корбета 2010 року, на що я вважаю, що це поведінка в даний час, і статтю Джонатана Корбета в 2013 році щодо ідей щодо майбутніх змін.

З статті 2010 року:

У наборі патчів Девіда стара евристика badness () майже повністю зникла. Натомість обчислення перетворюється на просте запитання, який відсоток наявної пам'яті використовується процесом. Якщо системі в цілому не вистачає пам’яті, то «наявна пам’ять» - це сума всієї оперативної пам’яті та місця обміну, доступного для системи. Якщо натомість ситуація з OOM викликана вичерпанням пам’яті, дозволеної даній групі cpuset / control, то «наявна пам’ять» - це загальна кількість, виділена цій контрольній групі. Аналогічний розрахунок проводиться, якщо перевищені межі, накладені політикою пам'яті. У кожному випадку використання пам'яті процесу вважається сумою його резидентного набору (кількість сторінок ОЗУ, яку він використовує) та його використання.

Цей підрахунок отримує в результаті число відсотків у десять разів; процес, який використовує кожен доступний йому байт пам'яті, матиме 1000 балів, тоді як процес, що не використовує пам'яті, отримає нульовий бал. Євристичних перетворень до цього показника дуже мало, але код все ж віднімає невелику кількість (30) від кількості кореневих процесів, враховуючи, що вони дещо цінніші, ніж процеси, що належать користувачеві.

Ще одне налаштування, яке застосовується, полягає в тому, щоб додати значення, збережене в змінній oom_score_adj кожного процесу, яке можна регулювати через / proc. Цей регулятор дозволяє регулювати привабливість кожного процесу для вбивці OOM у користувальницькому просторі; встановлення його до -1000 призведе до відключення вбивств OOM повністю, тоді як встановлення значення +1000 є еквівалентом малювання великої цілі в пов'язаному процесі.


Чи можливо для всіх процесів бал 0 oom? В даний час завантаження з живого CD призводить до цього.
CMCDragonkai
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.