nohang/conf/nohang/test.conf
2020-10-31 10:21:09 +09:00

481 lines
9.3 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
Key: zram_checking_enabled
Description:
Type: boolean
Valid values: True and False
Default value: False
zram_checking_enabled = True
###############################################################################
2. Common PSI settings
Description:
Type: boolean
Valid values: True and False
psi_checking_enabled = True
Description:
Type: string
Valid values:
psi_path = /proc/pressure/memory
Description:
Type: string
Valid values:
psi_metrics = full_avg10
Description:
Type: float
Valid values:
psi_excess_duration = 60
Description:
Type: float
Valid values:
psi_post_action_delay = 60
###############################################################################
3. Poll rate
Description:
Type: float
Valid values:
fill_rate_mem = 4000
Description:
Type: float
Valid values:
fill_rate_swap = 1500
Description:
Type: float
Valid values:
fill_rate_zram = 6000
Description:
Type: float
Valid values:
max_sleep = 3
Description:
Type: float
Valid values:
min_sleep = 0.1
###############################################################################
4. Warnings and notifications
4.1. GUI notifications after corrective actions
Description:
Type: boolean
Valid values: True and False
post_action_gui_notifications = True
Description:
Type: boolean
Valid values: True and False
hide_corrective_action_type = False
4.2. Low memory warnings
Description:
Type: boolean
Valid values: True and False
low_memory_warnings_enabled = True
Description:
Type: string
Valid values:
warning_exe =
Description:
Type: float (+ % or M)
Valid values:
warning_threshold_min_mem = 20 %
Description:
Type: float (+ % or M)
Valid values:
warning_threshold_min_swap = 20 %
Description:
Type: float (+ % or M)
Valid values:
warning_threshold_max_zram = 50 %
Description:
Type: float
Valid values:
warning_threshold_max_psi = 100
Description:
Type: float
Valid values:
min_post_warning_delay = 30
Description:
Type: float
Valid values:
env_cache_time = 300
###############################################################################
5. Soft threshold
Description:
Type: float (+ % or M)
Valid values:
soft_threshold_min_mem = 20 %
Description:
Type: float (+ % or M)
Valid values:
soft_threshold_min_swap = 20 %
Description:
Type: float (+ % or M)
Valid values:
soft_threshold_max_zram = 60 %
Description:
Type: float
Valid values:
soft_threshold_max_psi = 60
###############################################################################
6. Hard threshold
hard_threshold_min_mem = 2 %
Description:
Type: float (+ % or M)
Valid values:
hard_threshold_min_swap = 2 %
Description:
Type: float (+ % or M)
Valid values:
hard_threshold_max_zram = 65 %
Description:
Type: float
Valid values:
hard_threshold_max_psi = 90
###############################################################################
7. Customize victim selection: adjusting badness of processes
7.1. Ignore positive oom_score_adj
Description:
Type: boolean
Valid values: True and False
ignore_positive_oom_score_adj = True
7.3.1. Matching process names with RE patterns change their badness
Syntax:
@BADNESS_ADJ_RE_NAME badness_adj /// RE_pattern
New badness value will be += badness_adj
It is possible to compare multiple patterns
with different badness_adj values.
Example:
@BADNESS_ADJ_RE_NAME -500 /// ^sshd$
7.3.2. Matching CGroup_v1-line with RE patterns
@BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/system\.slice/
@BADNESS_ADJ_RE_CGROUP_V1 50 /// /foo\.service$
@BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/user\.slice/
7.3.3. Matching CGroup_v2-line with RE patterns
@BADNESS_ADJ_RE_CGROUP_V2 100 /// ^/workload
7.3.4. Matching eUIDs with RE patterns
@BADNESS_ADJ_RE_UID -100 /// ^0$
7.3.5. Matching realpath with RE patterns
@BADNESS_ADJ_RE_REALPATH 20 /// ^/usr/bin/foo
7.3.5.1. Matching cwd with RE patterns
@BADNESS_ADJ_RE_CWD 20 /// ^/home/
7.3.6. Matching cmdlines with RE patterns
@BADNESS_ADJ_RE_CMDLINE 2000 /// ^/bin/sleep
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
@BADNESS_ADJ_RE_CMDLINE -200 /// ^/usr/lib/virtualbox
7.3.7. Matching environ with RE patterns
@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
TODO: docs
Syntax:
KEY REGEXP SEPARATOR COMMAND
@SOFT_ACTION_RE_NAME ^tail$ /// kill -SEGV $PID
@SOFT_ACTION_RE_NAME ^foo$ /// kill -SEGV $PID
@SOFT_ACTION_RE_NAME ^bash$ /// kill -9 $PID
@SOFT_ACTION_RE_CGROUP_V1 ^/system\.slice/ /// systemctl restart $SERVICE
@SOFT_ACTION_RE_CGROUP_V1 /foo\.service$ /// systemctl restart $SERVICE
@SOFT_ACTION_RE_NAME ^tail$ /// kill -TERM $PID
$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
Description:
Type: float
Valid values:
max_soft_exit_time = 10
Description:
Type: string
Valid values:
post_kill_exe =
Description:
Type: integer
Valid values:
min_badness = 10
Description:
Type: float
Valid values:
post_soft_action_delay = 3
Description:
Type: float
Valid values:
post_zombie_delay = 0.1
Description:
Type: float
Valid values:
victim_cache_time = 10
Description:
Type: float
Valid values:
exe_timeout = 20
###############################################################################
10. Verbosity, debug, logging
Description:
Type: boolean
Valid values: True and False
print_config_at_startup = True
Description:
Type: boolean
Valid values: True and False
print_mem_check_results = True
Description:
Type: float
Valid values:
min_mem_report_interval = 0
Description:
Type: boolean
Valid values: True and False
print_proc_table = True
Description:
Type: string
Valid values:
None
cgroup_v1
cgroup_v2
realpath
cwd
cmdline
environ
extra_table_info = None
Description:
Type: boolean
Valid values: True and False
print_victim_status = True
Description:
Type: boolean
Valid values: True and False
print_victim_cmdline = True
Description:
Type: integer
Valid values:
max_victim_ancestry_depth = 99
Description:
Type: boolean
Valid values: True and False
print_statistics = True
Description:
Type: boolean
Valid values: True and False
debug_psi = True
Description:
Type: boolean
Valid values: True and False
debug_gui_notifications = True
Description:
Type: boolean
Valid values: True and False
debug_sleep = True
Description:
Type: boolean
Valid values: True and False
debug_threading = True
Description:
Type: boolean
Valid values: True and False
separate_log = True
###############################################################################
Use cases, feature requests and any questions are welcome:
https://github.com/hakavlad/nohang/issues