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: /// @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 /// @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