323 lines
13 KiB
Plaintext
323 lines
13 KiB
Plaintext
|
||
This is nohang config file.
|
||
|
||
Lines starting with #, tabs and spaces are comments.
|
||
|
||
The configuration includes the following sections:
|
||
|
||
I. STANDARD OUTPUT VERBOSITY
|
||
II. SELF-DEFENSE
|
||
III. INTENSITY OF MONITORING
|
||
IV. THRESHOLDS FOR SENDING SIGNALS
|
||
V. PREVENTION OF KILLING INNOCENT VICTIMS
|
||
VI. DESKTOP NOTIFICATIONS
|
||
VII. AVOID AND PREFER VICTIM NAMES VIA REGEX
|
||
VIII. LOGGING
|
||
IX. LOW MEMORY WARNINGS
|
||
X. EXECUTE THE COMMAND INSTEAD OF SENDING THE SIGTERM SIGNAL
|
||
|
||
Just read the description of the parameters and edit the values.
|
||
Please restart the program after editing the config.
|
||
|
||
#####################################################################
|
||
|
||
I. STANDARD OUTPUT VERBOSITY
|
||
|
||
Display the configuration when the program starts.
|
||
Valid values are True and False.
|
||
Values are case sensitive!
|
||
|
||
print_config = True
|
||
|
||
Print memory check results or not print.
|
||
Valid values are True and False.
|
||
|
||
print_mem_check_results = True
|
||
|
||
Print sleep periods between memory checks or not print.
|
||
Valid values are True and False.
|
||
|
||
print_sleep_periods = False
|
||
|
||
#####################################################################
|
||
|
||
II. SELF-DEFENSE
|
||
|
||
True - заблокировать процесс в памяти для запрета его своппинга.
|
||
False - не блокировать. Значения чувствительны к регистру!
|
||
|
||
В Fedora 28 значение True вызывает увеличение потребления
|
||
памяти процессом на 200 MiB, в Debian 8 и 9 такой проблемы нет.
|
||
|
||
mlockall = False
|
||
|
||
Установка отрицательных значений self_nice и self_oom_score_adj
|
||
требует наличия root прав.
|
||
|
||
Установка отрицательного self_nice повышает приоритет процесса.
|
||
|
||
Valid values are integers from the range [-20; 19].
|
||
|
||
self_nice = -10
|
||
|
||
Set oom_score_adj for the process.
|
||
Valid values are integers from the range [-1000; 1000].
|
||
Setting the values to -1000 will prohibit suicide.
|
||
|
||
self_oom_score_adj = -100
|
||
|
||
#####################################################################
|
||
|
||
III. INTENSITY OF MONITORING
|
||
|
||
Coefficients that affect the intensity of monitoring. Reducing
|
||
the coefficients can reduce CPU usage and increase the periods
|
||
between memory checks.
|
||
|
||
Почему три коэффициента, а не один? - Потому что скорость
|
||
наполнения свопа обычно ниже скорости наполнения RAM.
|
||
Можно для свопа задать более низкую интенсивность
|
||
мониторинга без ущерба для предотвращения нехватки памяти
|
||
и тем самым снизить нагрузку на процессор.
|
||
|
||
В дефолтных настройках на данной интенсивности демон работает
|
||
достаточно хорошо, успешно справляясь с резкими скачками потребления
|
||
памяти.
|
||
|
||
Default values are well for desktop.
|
||
On servers without rapid fluctuations in memory level, the
|
||
values can be reduced.
|
||
|
||
Valid values are positive floating-point numbers.
|
||
|
||
rate_mem = 6
|
||
rate_swap = 3
|
||
rate_zram = 1
|
||
|
||
#####################################################################
|
||
|
||
IV. THRESHOLDS FOR SENDING SIGNALS
|
||
|
||
Sets the available memory levels below which SIGTERM or SIGKILL
|
||
signals are sent. The signal will be sent if MemAvailable and
|
||
SwapFree at the same time will drop below the corresponding
|
||
values. Can be specified in % (percent) and M (MiB). Valid values
|
||
are floating-point numbers from the range [0; 100] %.
|
||
|
||
mem_min_sigterm = 9 %
|
||
mem_min_sigkill = 6 %
|
||
|
||
swap_min_sigterm = 9 %
|
||
swap_min_sigkill = 6 %
|
||
|
||
Specifying the total share of zram in memory, if exceeded the
|
||
corresponding signals are sent. As the share of zram in memory
|
||
increases, it may fall responsiveness of the system. 90 % is a
|
||
usual hang level, not recommended to set very high.
|
||
|
||
Can be specified in % and M. Valid values are floating-point
|
||
numbers from the range [0; 100] %.
|
||
|
||
zram_max_sigterm = 55 %
|
||
zram_max_sigkill = 60 %
|
||
|
||
#####################################################################
|
||
|
||
V. PREVENTION OF KILLING INNOCENT VICTIMS
|
||
|
||
Минимальное значение oom_score, которым должен обладать
|
||
процесс для того, чтобы ему был отправлен сигнал.
|
||
Позволяет предотвратить убийство невиновных если что-то
|
||
пойдет не так. Может min_badness с учетом списков?
|
||
|
||
Valid values are integers from the range [0; 1000].
|
||
|
||
oom_score_min = 10
|
||
|
||
Минимальная задержка после отправки соответствующих сигналов
|
||
для предотвращения риска убийства сразу множества процессов.
|
||
Должно быть неотрицательным числом.
|
||
|
||
Valid values are non-negative floating-point numbers.
|
||
|
||
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 перед поиском жертвы.
|
||
|
||
Enabling the option requires root privileges.
|
||
Valid values are True and False.
|
||
|
||
decrease_oom_score_adj = False
|
||
|
||
Valid values are integers from the range [0; 1000].
|
||
|
||
oom_score_adj_max = 20
|
||
|
||
#####################################################################
|
||
|
||
VI. DESKTOP NOTIFICATIONS
|
||
|
||
Включение этой опции требует наличия notify-send в системе.
|
||
В Debian/Ubuntu это обеспечивается установкой пакета
|
||
libnotify-bin. В Fedora и Arch Linux - пакет libnotify.
|
||
Также требуется наличие сервера уведомлений.
|
||
При запуске nohang от рута уведомления рассылаются всем
|
||
залогиненным пользователям.
|
||
See also wiki.archlinux.org/index.php/Desktop_notifications
|
||
Valid values are True and False.
|
||
|
||
desktop_notifications = False
|
||
|
||
Дополнительные опции для notify-send.
|
||
См. notify-send --help и man notify-send
|
||
Примеры:
|
||
notify_options = -u "critical"
|
||
notify_options = -t "20000" -i "dialog-warning"
|
||
|
||
notify_options =
|
||
|
||
Переменая окружения $DISPLAY, передаваемая notify-send при
|
||
запуске nohang с uid = 0.
|
||
Должен совпадать с выводом
|
||
$ echo $DISPLAY
|
||
|
||
root_display = :0
|
||
|
||
#####################################################################
|
||
|
||
VII. AVOID AND PREFER VICTIM NAMES VIA REGEX
|
||
|
||
Можно задать регулярные выражения (Perl-compatible regular
|
||
expressions), которые будут использоваться для сопоставления с
|
||
именами процессов для влияния на их badness.
|
||
|
||
Включение этой опции замедляет поиск жертвы, так как
|
||
имена всех процессов сравниваются с заданными regex-паттернами.
|
||
|
||
Valid values are True and False.
|
||
|
||
use_regex_lists = False
|
||
|
||
Приоритет списков (если один процесс находится одновременно в
|
||
нескольких):
|
||
1. whitelist_regex: сначала пропуск процессов из белого списка;
|
||
2. blacklist_regex: отправка сигнала всем из черного списка;
|
||
3. preferlist_regex и avoidlist_regex: умножение или деление
|
||
oom_score на соответствующие факторы.
|
||
|
||
Процессы, имена которых соответствуют выражению
|
||
whitelist_regex, не получат сигнал.
|
||
|
||
Регулярное выражение для формирования белого списка.
|
||
|
||
whitelist_regex = sshd
|
||
|
||
При нехватке памяти все процессы, имена которых соответствуют
|
||
blacklist_regex, получат сигнал.
|
||
|
||
blacklist_regex =
|
||
|
||
Badness процессов, имена которых соответствуют preferlist_regex,
|
||
будут рассчитываться по формуле
|
||
badness = (oom_score + 1) * preferlist_factor
|
||
|
||
preferlist_regex = tail|python3|someprocessname
|
||
|
||
Valid values are floating-point numbers from the range [1; 1000].
|
||
|
||
preferlist_factor = 3
|
||
|
||
Список нежелательных для убийства процессов.
|
||
|
||
Badness процессов, имена которых соответствуют avoidlist_regex,
|
||
будут рассчитываться по формуле
|
||
badness = oom_score / avoidlist_factor
|
||
|
||
avoidlist_regex = Xorg
|
||
|
||
Valid values are floating-point numbers from the range [1; 1000].
|
||
|
||
avoidlist_factor = 3
|
||
|
||
#####################################################################
|
||
|
||
VIII. LOGGING
|
||
|
||
OOM prevention progress can be logged.
|
||
|
||
Valid values are True and False.
|
||
|
||
logging = True
|
||
|
||
logfile = /var/log/nohang/nohang.log
|
||
|
||
#####################################################################
|
||
|
||
IX. LOW MEMORY WARNINGS
|
||
|
||
Десктопные уведомления о низком уровне доступной памяти.
|
||
Для работы опции должны быть включены десктопные уведомления.
|
||
Возможно стоит этот раздел объединить с DESKTOP NOTIFICATIONS.
|
||
|
||
Valid values are True and False.
|
||
|
||
low_memory_warnings = False
|
||
|
||
Минимальное время между отправками уведомлений в секундах.
|
||
Valid values are floating-point numbers from the range [1; 300].
|
||
|
||
min_time_between_warnings = 20
|
||
|
||
Если значения MemAvailable и SwapFree одновременно будут ниже
|
||
соотвестствующих значений, то будут отправлены уведомления.
|
||
|
||
Can be specified in % (percent) and M (MiB).
|
||
Valid values are floating-point numbers from the range [0; 100] %.
|
||
|
||
mem_min_warnings = 20 %
|
||
|
||
swap_min_warnings = 20 %
|
||
|
||
Если доля zram в памяти превысит значение zram_max_warnings,
|
||
то будут отправляться уведомления с минимальным периодом равным
|
||
min_time_between_warnings.
|
||
|
||
zram_max_warnings = 40 %
|
||
|
||
#####################################################################
|
||
|
||
X. EXECUTE THE COMMAND INSTEAD OF SENDING THE SIGTERM SIGNAL
|
||
|
||
Для процессов с определенным именем можно задать команду,
|
||
которая будет выполняться вместо отправки сигнала SIGTERM
|
||
процессу с соответствующим именем.
|
||
|
||
Например, если процесс запущен как демон, то вместо
|
||
отправки SIGTERM можно выполнить команду перезапуска.
|
||
|
||
Valid values are True and False.
|
||
|
||
execute_the_command = False
|
||
|
||
Длина имени процесса не должна превышать 15 символов.
|
||
Синтаксис таков: строки, начинающиеся с **, считаются строками,
|
||
содержащими имена процессов и соотвестствующие команды для
|
||
перезапуска этих процессов. После имени процесса через двойное
|
||
двоеточие (::) следует команда.
|
||
Амперсанд (&) в конце команды позволит nohang продолжить работу
|
||
не дожидаясь окончания выполнения команды.
|
||
|
||
For example:
|
||
** mysqld :: systemctl restart mariadb.service &
|
||
** php-fpm7.0 :: systemctl restart php7.0-fpm.service &
|
||
|
||
** processname :: some command
|
||
|