nohang/nohang.conf
2018-07-10 18:14:53 +09:00

323 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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