141 lines
3.0 KiB
Plaintext
141 lines
3.0 KiB
Plaintext
This is nohang config file.
|
|
Lines starting with $ contain obligatory parameters.
|
|
Lines starting with @ contain optional parameters.
|
|
Other lines are comments.
|
|
|
|
0. Common zram settings
|
|
|
|
See https://www.kernel.org/doc/Documentation/blockdev/zram.txt
|
|
You maybe need $IGNORE_ZRAM=FALSE if you has a big zram disksize
|
|
|
|
$IGNORE_ZRAM = TRUE
|
|
|
|
1. Common PSI settings
|
|
|
|
See
|
|
https://lwn.net/Articles/759658/
|
|
https://facebookmicrosites.github.io/psi/
|
|
|
|
$IGNORE_PSI = TRUE
|
|
|
|
$PSI_PATH = /proc/pressure/memory
|
|
|
|
some_avg10 is most sensitive.
|
|
|
|
$PSI_METRICS = some_avg10
|
|
|
|
$PSI_EXCESS_DURATION = 0
|
|
|
|
$PSI_POST_ACTION_DELAY = 40
|
|
|
|
|
|
|
|
2. Poll rate
|
|
|
|
$FILL_RATE_MEM = 4000
|
|
$FILL_RATE_SWAP = 1500
|
|
$FILL_RATE_ZRAM = 500
|
|
$MIN_SLEEP = 0.1
|
|
$MAX_SLEEP = 3
|
|
|
|
|
|
3. Warnings / GUI notifications
|
|
|
|
$GUI_CORRECTIVE_ACTIONS = FALSE
|
|
|
|
$GUI_LOW_MEMORY_WARNINGS = FALSE
|
|
$GUI_WARNINGS_MIN_MEM = 20 %
|
|
$GUI_WARNINGS_MIN_SWAP = 20 %
|
|
$GUI_WARNINGS_MAX_ZRAM = 45 %
|
|
$GUI_MIN_DELAY_AFTER_WARNING = 15
|
|
|
|
@EXE_INSTEAD_OF_GUI_WARNING wall -n "LOW MEMORY!"
|
|
@EXE_INSTEAD_OF_GUI_WARNING echo 'test'
|
|
|
|
|
|
4. Soft threshold / SIGTERM-related parameters
|
|
|
|
$SOFT_MIN_MEM_THRESHOLD = 10 %
|
|
$SOFT_MIN_SWAP_THRESHOLD = 10 %
|
|
$SOFT_MAX_ZRAM_THRESHOLD = 50 %
|
|
|
|
$SOFT_POST_ACTION_DELAY = 0.2
|
|
|
|
$MAX_POST_SOFT_ACTION_VICTIM_LIFETIME = 9
|
|
|
|
$SOFT_MAX_PSI_THRESHOLD = 60
|
|
$SOFT_MAX_PSI_DURATION = 5
|
|
|
|
The execution of specified command instead of sending the SIGTERM signal.
|
|
Syntax example:
|
|
<key> <regular expression> /// <command>
|
|
|
|
@EXE_INSTEAD_OF_SIGTERM_RE_NAME ^foo$ /// kill -9 $PID && echo "Praise KEK, kill $NAME" &
|
|
|
|
@EXE_INSTEAD_OF_SIGTERM_RE_CMDLINE ^/sbin/foo /// systemctl restart foo
|
|
|
|
@EXE_INSTEAD_OF_SIGTERM_RE_REALPATH ^/sbin/bar$ /// systemctl restart foo
|
|
|
|
@EXE_INSTEAD_OF_SIGTERM_RE_UID ^1000$ /// pkill -SEGV $NAME
|
|
@EXE_INSTEAD_OF_SIGTERM_RE_UID ^1001$ /// pkill -HUP $NAME
|
|
|
|
@SOFT_THRESHOLD_EXE_RE_NAME
|
|
|
|
5. Hard threshold / SIGKILL-related parameters
|
|
|
|
$HARD_MIN_MEM_THRESHOLD = 5 %
|
|
$HARD_MIN_SWAP_THRESHOLD = 5 %
|
|
$HARD_MAX_ZRAM_THRESHOLD = 55 %
|
|
|
|
$POST_KILL_EXE =
|
|
|
|
$HARD_POST_ACTION_DELAY = 1
|
|
|
|
$HARD_MAX_PSI_THRESHOLD = 90
|
|
$HARD_MAX_PSI_DURATION = 5
|
|
|
|
|
|
$POST_KILL_EXE =
|
|
|
|
|
|
|
|
6. Adjusting badness of processes
|
|
|
|
$OOM_SCORE_ADJ_LIMIT = -1
|
|
|
|
Badness adjusting by matching process name, cmdline and eUID with specified regular expression.
|
|
|
|
Example badness adj rules
|
|
<key> <regular expression> /// <badness_adj>
|
|
|
|
@BADNESS_ADJ_RE_CMDLINE -childID|--type=renderer /// 200
|
|
|
|
@BADNESS_ADJ_RE_NAME ^Xorg$ /// -100
|
|
|
|
@BADNESS_ADJ_RE_UID ^0$ /// -50
|
|
|
|
@BADNESS_ADJ_RE_REALPATH ^/usr/bin/tail$ /// 100
|
|
|
|
|
|
|
|
7. Avoid killing small processes (innocent victims)
|
|
|
|
$MIN_VICTIM_BADNESS = 20
|
|
|
|
|
|
8. Verbosity
|
|
|
|
$PRINT_CONFIG_AT_STARTUP = FALSE // --print-config
|
|
|
|
$MIN_MEM_REPORT_INTERVAL = -1
|
|
|
|
$PRINT_VICTIM_INFO = TRUE
|
|
|
|
$PRINT_TOTAL_STAT = TRUE
|
|
|
|
$PRINT_PROC_TABLE = FALSE
|
|
|
|
$PRINT_SLEEP_PERIODS = FALSE
|
|
|
|
|