nohang/conf/nohang/nohang.conf.in
2020-08-10 00:17:41 +09:00

375 lines
11 KiB
Plaintext

## This is the configuration file of the nohang daemon.
## The configuration includes the following sections:
## 0. Check kernel messages for OOM events
## 1. Common zram settings
## 2. Common PSI settings
## 3. Poll rate
## 4. Warnings and notifications
## 5. Soft (SIGTERM) threshold
## 6. Hard (SIGKILL) threshold
## 7. Customize victim selection: adjusting badness of processes
## 8. Customize soft corrective actions
## 9. Misc settings
## 10. Verbosity, debug, logging
## WARNING!
## - Lines starting with #, tabs and whitespace characters are comments.
## - Lines starting with @ contain optional parameters that may be repeated.
## - All values are case sensitive.
## - nohang doesn't forbid you to shoot yourself in the foot. Be careful!
## - Restart the daemon after editing the file to apply the new settings.
## - You can find the file with default values here: :TARGET_DATADIR:/nohang/nohang.conf
## To find config keys descriptions see man(8) nohang
###############################################################################
## 0. Check kernel messages for OOM events
# @check_kmsg
## Type: boolean
## Comment/uncomment to disable/enable checking kmsg for OOM events
# @debug_kmsg
## Type: boolean
## Comment/uncomment to disable/enable debug checking kmsg
###############################################################################
## 1. Common zram settings
zram_checking_enabled = False
## Type: boolean, valid values: True | False
## Default value: False
###############################################################################
## 2. Common PSI settings
psi_checking_enabled = False
## Type: boolean, valid values: True | False
## Default value: False
psi_path = /proc/pressure/memory
## Type: string; valid values: any string
## Default value: /proc/pressure/memory
psi_metrics = some_avg10
## Type: string; valid values: some_avg10, some_avg60, some_avg300,
## full_avg10, full_avg60, full_avg300
## Default value: some_avg10
psi_excess_duration = 30
## Type: float; valid values: >= 0
## Default value: 30
psi_post_action_delay = 15
## Type: float; valid values: >= 10
## Default value: 15
###############################################################################
## 3. Poll rate
fill_rate_mem = 6000
## Type: float; valid values: >= 100
## Default value: 6000
fill_rate_swap = 2000
## Type: float; valid values: >= 100
## Default value: 2000
fill_rate_zram = 4000
## Type: float; valid values: >= 100
## Default value: 4000
max_sleep = 3
## Type: float; valid values: >= 0.01 and >= min_sleep
## Default value: 3
min_sleep = 0.1
## Type: float; valid values: >= 0.01 and <= max_sleep
## Default value: 0.1
###############################################################################
## 4. Warnings and notifications
## 4.1. GUI notifications after corrective actions
post_action_gui_notifications = False
## Type: boolean; valid values: True | False
## Default value: False
hide_corrective_action_type = False
## Type: boolean; valid values: True | False
## Default value: False
## 4.2. Low memory warnings
low_memory_warnings_enabled = False
## Type: boolean; valid values: True | False
## Default value: False
warning_exe =
## Type: string; valid values: any string
## Default value: (empty string)
warning_threshold_min_mem = 20 %
## Type: float (with % or M); valid values: from the range [0; 100] %
## Default value: 20 %
warning_threshold_min_swap = 25 %
## Type: float (with % or M); valid values: [0; 100] % or >= 0 M
## Default value: 20 %
warning_threshold_max_zram = 45 %
## Type: float (with % or M); valid values: from the range [0; 100] %
## Default value: 45 %
warning_threshold_max_psi = 10
## Type: float; valid values: from the range [0; 100]
## Default value: 10
min_post_warning_delay = 60
## Type: float; valid values: >= 1
## Default value: 60
env_cache_time = 300
## Type: float; valid values: >= 0
## Default value: 300
###############################################################################
## 5. Soft threshold (thresholds for sending the SIGTERM signal or
## implementing other soft corrective action)
soft_threshold_min_mem = 5 %
## Type: float (with % or M); valid values: from the range [0; 50] %
## Default value: 5 %
soft_threshold_min_swap = 10 %
## Type: float (with % or M); valid values: [0; 100] % or >= 0 M
## Default value: 10 %
soft_threshold_max_zram = 55 %
## Type: float (with % or M); valid values: from the range [10; 90] %
## Default value: 55 %
soft_threshold_max_psi = 40
## Type: float; valid values: from the range [5; 100]
## Default value: 40
###############################################################################
## 6. Hard threshold (thresholds for sending the SIGKILL signal)
hard_threshold_min_mem = 2 %
## Type: float (with % or M); valid values: from the range [0; 50] %
## Default value: 2 %
hard_threshold_min_swap = 4 %
## Type: float (with % or M); valid values: [0; 100] % or >= 0 M
## Default value: 4 %
hard_threshold_max_zram = 60 %
## Type: float (with % or M); valid values: from the range [10; 90] %
## Default value: 60 %
hard_threshold_max_psi = 90
## Type: float; valid values: from the range [5; 100]
## Default value: 90
###############################################################################
## 7. Customize victim selection: adjusting badness of processes
## 7.1. Ignore positive oom_score_adj
ignore_positive_oom_score_adj = False
## Type: boolean; valid values: True | False
## Default value: False
## 7.2. Matching process properties with regular expressions to change their
## badness.
## Syntax:
## @BADNESS_ADJ_RE_PROPERTY badness_adj /// RE_pattern
## New badness value will be added to process's badness_adj
## It is possible to compare multiple patterns
## with different badness_adj values.
## 7.2.1. Matching process names with RE patterns to change their badness
## Example:
# @BADNESS_ADJ_RE_NAME 200 /// ^Web Content$
## 7.2.2. Matching CGroup_v1-line with RE patterns
# @BADNESS_ADJ_RE_CGROUP_V1 50 /// /foo\.service$
# @BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/user\.slice/
## 7.2.3. Matching CGroup_v2-line with RE patterns
# @BADNESS_ADJ_RE_CGROUP_V2 100 /// ^/workload
## 7.2.4. Matching eUIDs with RE patterns
# @BADNESS_ADJ_RE_UID -100 /// ^0$
## 7.2.5. Matching /proc/[pid]/exe realpath with RE patterns
## Example:
# @BADNESS_ADJ_RE_REALPATH 900 /// ^(/usr/bin/stress|/usr/bin/stress-ng)$
## 7.2.6. Matching /proc/[pid]/cwd realpath with RE patterns
# @BADNESS_ADJ_RE_CWD 200 /// ^/home/
## 7.2.7. Matching cmdlines with RE patterns
## WARNING: using this option can greatly slow down the search for a victim
## in conditions of intense swapping.
## Prefer Chromium tabs and Electron-based apps
# @BADNESS_ADJ_RE_CMDLINE 200 /// --type=renderer
## Prefer Firefox tabs (Web Content and WebExtensions)
# @BADNESS_ADJ_RE_CMDLINE 100 /// -appomni
## Avoid Virtualbox processes
# @BADNESS_ADJ_RE_CMDLINE -200 /// ^/usr/lib/virtualbox
## 7.2.8. Matching environ with RE patterns
## WARNING: using this option can greatly slow down the search for a victim
## in conditions of heavy swapping.
# @BADNESS_ADJ_RE_ENVIRON 100 /// USER=user
# Note that you can control badness also via systemd units via
# OOMScoreAdjust, see
# www.freedesktop.org/software/systemd/man/systemd.exec.html#OOMScoreAdjust=
###############################################################################
## 8. Customize soft corrective actions
## Run the command instead of sending a signal with at soft corrective action
## if the victim's name or cgroup matches the regular expression.
## Syntax:
## KEY REGEXP SEPARATOR COMMAND
# @SOFT_ACTION_RE_NAME ^foo$ /// kill -USR1 $PID
# @SOFT_ACTION_RE_CGROUP_V1 ^/system\.slice/ /// systemctl restart $SERVICE
# @SOFT_ACTION_RE_CGROUP_V2 /foo\.service$ /// systemctl restart $SERVICE
## $PID will be replaced by process PID.
## $NAME will be replaced by process name.
## $SERVICE will be replaced by .service if it exists (overwise it will be
## relpaced by empty line)
###############################################################################
## 9. Misc settings
max_soft_exit_time = 10
## Type: float; valid values: >= 0.1
## Default value: 10
post_kill_exe =
## Type: string; valid values: any string
## Default value: (empty string)
min_badness = 1
## Type: integer; valid values: >= 1
## Default value: 1
## nohang will do nothing if the badness of all processes is below min_badness
## (actualy it will spam to stdout/log)
post_soft_action_delay = 3
## Type: float; valid values: >= 0.1
## Default value: 3
post_zombie_delay = 0.1
## Type: float; valid values: >= 0
## Default value: 0.1
victim_cache_time = 10
## Type: float; valid values: >= 0
## Default value: 10
exe_timeout = 20
## Type: float; valid values: >= 0.1
## Default value: 20
###############################################################################
## 10. Verbosity, debug, logging
print_config_at_startup = False
## Type: boolean; valid values: True | False
## Default value: False
print_mem_check_results = False
## Type: boolean; valid values: True | False
## Default value: False
min_mem_report_interval = 60
## Type: float; valid values: >= 0
## Default value: 60
print_proc_table = False
## Type: boolean; valid values: True | False
## Default value: False
extra_table_info = None
## Type: string; valid values: None, cgroup_v1, cgroup_v2, realpath, cwd,
## cmdline, environ
## Default value: None
## WARNING: using "cmdline" or "environ" keys can greatly slow down the search
## for a victim in conditions of heavy swapping.
print_victim_status = True
## Type: boolean; valid values: True | False
## Default value: True
print_victim_cmdline = False
## Type: boolean; valid values: True | False
## Default value: False
max_victim_ancestry_depth = 3
## Type: integer; valid values: >= 1
## Default value: 3
print_statistics = True
## Type: boolean; valid values: True | False
## Default value: True
debug_psi = False
## Type: boolean; valid values: True | False
## Default value: False
debug_gui_notifications = False
## Type: boolean; valid values: True | False
## Default value: False
debug_sleep = False
## Type: boolean; valid values: True | False
## Default value: False
debug_threading = False
## Type: boolean; valid values: True | False
## Default value: False
separate_log = False
## Type: boolean; valid values: True | False
## Default value: False
###############################################################################
## Use cases, feature requests and any questions are welcome:
## https://github.com/hakavlad/nohang/issues
##