162 lines
7.5 KiB
Plaintext
162 lines
7.5 KiB
Plaintext
|
||
Nohang config file
|
||
|
||
Комментариями являются строки, начинающиеся с решёток, пробелов
|
||
и табуляций. Инлайновые комментарии запрещены. Пробелы допустиы
|
||
внутри строк в любом количестве.
|
||
|
||
#####################################################################
|
||
|
||
I. VERBOSITY
|
||
|
||
Печатать параметров конфига при запуске программы.
|
||
Допустимые значения: True и False
|
||
|
||
print_config = True
|
||
|
||
Печатать ли результаты измерения доступной памяти.
|
||
Допустимые значения: True и False
|
||
|
||
print_mem_check_results = True
|
||
|
||
Печатать ли время сна между проверками памяти и после отправки
|
||
сигналов. Можно установить в значение True для дебага.
|
||
Допустимые значения: True и False
|
||
(В этой ветке по дефолту True)
|
||
|
||
print_sleep_periods = True
|
||
|
||
#####################################################################
|
||
|
||
II. SELF PROTECTION
|
||
|
||
True - заблокировать процесс в памяти для запрета его своппинга.
|
||
False - не блокировать. Значения чувствительны к регистру!
|
||
|
||
В Fedora 28 значение True вызывает увеличение потребления
|
||
памяти процессом на 200 MiB, в Debian 8 и 9 такой проблемы нет.
|
||
|
||
mlockall = False
|
||
|
||
Установка отрицательных значений self_nice и self_oom_score_adj
|
||
требует наличия root прав.
|
||
|
||
Установка отрицательного self_nice повышает приоритет процесса.
|
||
Допустимые значения - целые числа из диапазона [-20; 19]
|
||
|
||
self_nice = -15
|
||
|
||
Задать oom_score_adj для процесса.
|
||
Установка значения -1000 запретит самоубийство.
|
||
Допустимые значения - целые числа из диапазона [-1000; 1000]
|
||
|
||
self_oom_score_adj = -1000
|
||
|
||
#####################################################################
|
||
|
||
III. ИНТЕНСИВНОСТЬ МОНИТОРИНГА
|
||
|
||
Коэффициенты, влияющие на интенсивность мониторинга.
|
||
Допустимыми значениями являются положительные числа.
|
||
Уменьшение коэффициентов способно снизить нагрузку на
|
||
прцессор и увеличить периоды между проверками памяти.
|
||
|
||
Почему три коэффициента, а не один? - Потому что скорость
|
||
наполнения свопа обычно ниже скорости наполнения RAM.
|
||
Можно для свопа задать более низкую интенсивность
|
||
мониторинга без ущерба для предотвращения нехватки памяти
|
||
и тем самым снизить нагрузку на процессор.
|
||
|
||
В дефолтных настройках на данной интенсивности демон работает
|
||
достаточно хорошо, успешно справляясь с резкими скачками потребления
|
||
памяти.
|
||
|
||
rate_mem = 3
|
||
rate_swap = 1
|
||
rate_zram = 0.5
|
||
|
||
#####################################################################
|
||
|
||
IV. ПОРОГИ ДЛЯ ОТПРАВКИ СИГНАЛОВ
|
||
|
||
Задание уровней доступной памяти, ниже которых происходит
|
||
отправка сигналов SIGTERM или SIGKILL.
|
||
|
||
Сигнал отправляется если MemAvailable и SwapFree одновременно
|
||
опустятся ниже соответствующих значений.
|
||
|
||
Значения могут быть выражены в процентах (%) и мебибайтах (M)
|
||
|
||
mem_min_sigterm = 8 %
|
||
mem_min_sigkill = 4 %
|
||
|
||
swap_min_sigterm = 8 %
|
||
swap_min_sigkill = 4 %
|
||
|
||
Задание общей доли zram в памяти, при превышении которой
|
||
происходит отправка соответствующих сигналов.
|
||
Экспериментально удалось добиться доли зрам в 95%, при которой
|
||
система виснет или запускается OOM killer.
|
||
По мере увеличения доли zram в памяти может падать
|
||
отзывчивость системы.
|
||
Может также задаваться в % и M.
|
||
|
||
zram_max_sigterm = 55 %
|
||
zram_max_sigkill = 60 %
|
||
|
||
#####################################################################
|
||
|
||
V. THE PREVENTION OF KILLING INNOCENT VICTIMS
|
||
|
||
Минимальное значение oom_score, которым должен обладать
|
||
процесс для того, чтобы ему был отправлен сигнал.
|
||
Позволяет предотвратить убийство невиновных если что-то
|
||
пойдет не так.
|
||
|
||
Значение должно быть целым числом из диапазона [0; 1000]
|
||
|
||
oom_score_min = 20
|
||
|
||
Минимальная задержка после отправки соответствующих сигналов
|
||
для предотвращения риска убийства сразу множества процессов.
|
||
Должно быть неотрицательным числом.
|
||
|
||
min_delay_after_sigterm = 0.5
|
||
min_delay_after_sigkill = 3
|
||
|
||
Процессы браузера chromium обычно имеют oom_score_adj
|
||
200 или 300. Это приводит к тому, что процессы хрома умирают
|
||
первыми вместо действительно тяжелых процессов.
|
||
Если параметр decrease_oom_score_adj установлен
|
||
в значение True, то у процессов, имеющих oom_score_adj выше
|
||
oom_score_adj_max значение oom_score_adj будет опущено
|
||
до oom_score_adj_max перед поиском жертвы.
|
||
False - не изменять oom_score_adj процессов перед поиском
|
||
жертвы. Значения чувствительны к регистру!
|
||
|
||
Требует root прав.
|
||
|
||
decrease_oom_score_adj = True
|
||
|
||
Допустимые значения - целые числа из диапазона [0; 1000]
|
||
|
||
oom_score_adj_max = 50
|
||
|
||
#####################################################################
|
||
|
||
VI. DESKTOP NOTIFICATIONS
|
||
|
||
Эта возможность требует наличия notify-send в системе.
|
||
|
||
В Debian/Ubuntu это обеспечивается установкой пакета
|
||
libnotify-bin. В Fedora и Arch Linux - пакет libnotify.
|
||
Также требуется наличие notification-daemon.
|
||
При запуске nohang от рута уведомления рассылаются всем
|
||
залогиненным пользователям.
|
||
See also wiki.archlinux.org/index.php/Desktop_notifications
|
||
|
||
Допустимые значения: True и False
|
||
|
||
desktop_notifications = True
|
||
|