Nohang config file Комментариями являются строки, начинающиеся с решёток, пробелов и табуляций. Инлайновые комментарии запрещены. Пробелы допустиы внутри строк в любом количестве. ##################################################################### I. VERBOSITY Печатать параметров конфига при запуске программы. Допустимые значения: True и False print_config = True Печатать ли результаты измерения доступной памяти. Допустимые значения: True и False print_mem_check_results = True Печатать ли время сна между проверками памяти и после отправки сигналов. Можно установить в значение True для дебага. Допустимые значения: True и False print_sleep_pediods = False ##################################################################### II. САМОЗАЩИТА ПРОЦЕССА True - заблокировать процесс в памяти для запрета его своппинга. False - не блокировать. Значения чувствительны к регистру! mlockall = True Установка отрицательных значений self_nice и self_oom_score_adj требует наличия root прав. Повысить приоритет процесса, установив niceness -20 Допустимые значения - целые числа из диапазона [-20; 19] self_nice = -20 Задать oom_score_adj для процесса. Установка значения -1000 запретит самоубийство. Допустимые значения - целые числа из диапазона [-1000; 1000] self_oom_score_adj = -1000 ##################################################################### III. ИНТЕНСИВНОСТЬ МОНИТОРИНГА Коэффициенты, влияющие на интенсивность мониторинга. Допустимыми значениями являются положительные числа. Уменьшение коэффициентов способно снизить нагрузку на прцессор и увеличить периоды между проверками памяти. Почему три коэффициента, а не один? - Потому что скорость наполнения свопа обычно ниже скорости наполнения RAM. Можно для свопа задать более низкую интенсивность мониторинга без ущерба для предотвращения нехватки памяти и тем самым снизить нагрузку на процессор. В дефолтных настройках на данной интенсивности демон работает достаточно хорошо, успешно справляясь с резкими скачками потребления памяти. rate_mem = 6 rate_swap = 0.2 rate_zram = 1 ##################################################################### IV. ПОРОГИ ДЛЯ ОТПРАВКИ СИГНАЛОВ Задание уровней доступной памяти, ниже которых происходит отправка сигналов SIGTERM или SIGKILL. Сигнал отправляется если MemAvailable и SwapFree одновременно опустятся ниже соответствующих значений. Значения могут быть выражены в процентах (%), кибибайтах (K), мебибайтах (M) или гибибайтах (G). Например: swap_min_sigterm = 8 % mem_min_sigterm = 0.5 G swap_min_sigkill = 200 M mem_min_sigterm = 8% mem_min_sigkill = 4% swap_min_sigterm = 8% swap_min_sigkill = 4% Задание общей доли zram в памяти, при превышении которой происходит отправка соответствующих сигналов. Экспериментально удалось добиться доли зрам в 95%, при которой система виснет или запускается OOM killer. По мере увеличения доли zram в памяти может падать отзывчивость системы. Может также задаваться в %, K, M, G zram_max_sigterm = 55 % zram_max_sigkill = 60 % ##################################################################### VI. ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНЫХ УБИЙСТВ Минимальное значение oom_score, которым должен обладать процесс для того, чтобы ему был отправлен сигнал. Позволяет предотвратить убийство невиновных если что-то пойдет не так. Значение должно быть целым числом из диапазона [0; 1000] oom_score_min = 15 Минимальная задержка после отправки соответствующих сигналов для предотвращения риска убийства сразу множества процессов. Должно быть неотрицательным числом. min_delay_after_sigterm = 0.1 min_delay_after_sigkill = 3 ##################################################################### VII. ЗАЩИТА ПРОЦЕССОВ CHROMIUM ОТ СМЕРТИ ПО ЧУЖОЙ ВИНЕ Процессы браузера chromium обычно имеют oom_score_adj 200 или 300. Это приводит к тому, что процессы хрома умирают первыми вместо действительно тяжелых процессов. Если параметр decrease_oom_score_adj установлен в значение True, то у процессов, имеющих oom_score_adj выше oom_score_adj_before значение oom_score_adj будет опущено до oom_score_adj_after перед поиском жертвы. False - не изменять oom_score_adj процессов перед поиском жертвы. Значения чувствительны к регистру! Требует root прав. decrease_oom_score_adj = False Допустимые значения - целые числа из диапазона [0; 1000] oom_score_adj_before = 10 oom_score_adj_after = 5