Improve conf checking and parsing
remove forbid_negative_badness from config improve conf checking and showing with --check --config
This commit is contained in:
parent
3e1acc3590
commit
3e170f5ec4
161
nohang/nohang
161
nohang/nohang
@ -11,6 +11,13 @@ from sre_constants import error as invalid_re
|
||||
from signal import signal, SIGKILL, SIGTERM, SIGINT, SIGQUIT, SIGHUP, SIGUSR1
|
||||
|
||||
|
||||
def missing_config_key(key):
|
||||
"""
|
||||
"""
|
||||
errprint('ERROR: missing config key "{}"'.format(key))
|
||||
exit(1)
|
||||
|
||||
|
||||
def check_permissions():
|
||||
"""
|
||||
"""
|
||||
@ -432,7 +439,7 @@ def send_notify_etc(pid, name, command):
|
||||
def check_config():
|
||||
"""
|
||||
"""
|
||||
log('#' * 79)
|
||||
# log('#' * 79)
|
||||
|
||||
log('\n1. Common zram settings')
|
||||
|
||||
@ -459,7 +466,8 @@ def check_config():
|
||||
|
||||
log(' post_action_gui_notifications: {}'.format(
|
||||
post_action_gui_notifications))
|
||||
|
||||
log(' hide_corrective_action_type: {}'.format(
|
||||
hide_corrective_action_type))
|
||||
log(' low_memory_warnings_enabled: {}'.format(
|
||||
low_memory_warnings_enabled))
|
||||
log(' warning_exe: {}'.format(warning_exe))
|
||||
@ -475,7 +483,6 @@ def check_config():
|
||||
warning_threshold_max_psi))
|
||||
log(' min_post_warning_delay: {} sec'.format(
|
||||
min_post_warning_delay))
|
||||
|
||||
log(' env_cache_time: {}'.format(env_cache_time))
|
||||
|
||||
log('\n5. Soft threshold')
|
||||
@ -503,78 +510,73 @@ def check_config():
|
||||
log('\n7. Customize victim selection: adjusting badness of processes')
|
||||
|
||||
log('\n7.1. Ignore positive oom_score_adj')
|
||||
|
||||
log(' ignore_positive_oom_score_adj: {}'.format(
|
||||
ignore_positive_oom_score_adj))
|
||||
|
||||
log('\n7.2. Forbid negative badness')
|
||||
log('\n7.2. Adjusting badness of processes by matching with '
|
||||
'regular expressions')
|
||||
|
||||
log(' forbid_negative_badness: {}'.format(
|
||||
forbid_negative_badness))
|
||||
|
||||
log('\n7.3. ')
|
||||
|
||||
log('7.3.1. Matching process names with RE patterns')
|
||||
log('7.2.1. Matching process names with RE patterns')
|
||||
if len(badness_adj_re_name_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_name_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
log('7.3.2. Matching CGroup_v1-line with RE patterns')
|
||||
log('7.2.2. Matching CGroup_v1-line with RE patterns')
|
||||
if len(badness_adj_re_cgroup_v1_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_cgroup_v1_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
log('7.3.3. Matching CGroup_v2-line with RE patterns')
|
||||
log('7.2.3. Matching CGroup_v2-line with RE patterns')
|
||||
if len(badness_adj_re_cgroup_v2_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_cgroup_v2_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
log('7.3.4. Matching eUIDs with RE patterns')
|
||||
log('7.2.4. Matching eUIDs with RE patterns')
|
||||
if len(badness_adj_re_uid_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_uid_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
log('7.3.5. Matching realpath with RE patterns')
|
||||
log('7.2.5. Matching realpath with RE patterns')
|
||||
if len(badness_adj_re_realpath_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_realpath_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
log('7.3.5.1. Matching cwd with RE patterns')
|
||||
log('7.2.6. Matching cwd with RE patterns')
|
||||
if len(badness_adj_re_cwd_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_cwd_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
log('7.3.6. Matching cmdlines with RE patterns')
|
||||
log('7.2.7. Matching cmdlines with RE patterns')
|
||||
if len(badness_adj_re_cmdline_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_cmdline_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
log('7.3.7. Matching environ with RE patterns')
|
||||
log('7.2.8. Matching environ with RE patterns')
|
||||
if len(badness_adj_re_environ_list) > 0:
|
||||
log(' regexp: badness_adj:')
|
||||
log(' badness_adj: regexp:')
|
||||
for i in badness_adj_re_environ_list:
|
||||
log(' {} {}'.format(i[1], i[0]))
|
||||
log(' {:>12} {}'.format(i[0], i[1]))
|
||||
else:
|
||||
log(' (not set)')
|
||||
|
||||
@ -1430,9 +1432,7 @@ def conf_parse_string(param):
|
||||
if param in config_dict:
|
||||
return config_dict[param].strip()
|
||||
else:
|
||||
errprint('All the necessary parameters must be in the config')
|
||||
errprint('There is no "{}" parameter in the config'.format(param))
|
||||
exit(1)
|
||||
missing_config_key(param)
|
||||
|
||||
|
||||
def conf_parse_bool(param):
|
||||
@ -1454,9 +1454,7 @@ def conf_parse_bool(param):
|
||||
errprint('Exit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('All the necessary parameters must be in the config')
|
||||
errprint('There is no "{}" parameter in the config'.format(param))
|
||||
exit(1)
|
||||
missing_config_key(param)
|
||||
|
||||
|
||||
def rline1(path):
|
||||
@ -3091,7 +3089,6 @@ else:
|
||||
debug_psi = conf_parse_bool('debug_psi')
|
||||
print_statistics = conf_parse_bool('print_statistics')
|
||||
print_proc_table = conf_parse_bool('print_proc_table')
|
||||
forbid_negative_badness = conf_parse_bool('forbid_negative_badness')
|
||||
print_victim_status = conf_parse_bool('print_victim_status')
|
||||
print_victim_cmdline = conf_parse_bool('print_victim_cmdline')
|
||||
print_config_at_startup = conf_parse_bool('print_config_at_startup')
|
||||
@ -3169,8 +3166,7 @@ if 'post_zombie_delay' in config_dict:
|
||||
errprint('post_zombie_delay MUST be >= 0\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('post_zombie_delay not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('post_zombie_delay')
|
||||
|
||||
|
||||
if 'victim_cache_time' in config_dict:
|
||||
@ -3183,8 +3179,7 @@ if 'victim_cache_time' in config_dict:
|
||||
errprint('victim_cache_time MUST be >= 0\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('victim_cache_time not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('victim_cache_time')
|
||||
|
||||
|
||||
if 'env_cache_time' in config_dict:
|
||||
@ -3197,8 +3192,7 @@ if 'env_cache_time' in config_dict:
|
||||
errprint('env_cache_time MUST be >= 0\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('env_cache_time not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('env_cache_time')
|
||||
|
||||
|
||||
if 'exe_timeout' in config_dict:
|
||||
@ -3211,8 +3205,7 @@ if 'exe_timeout' in config_dict:
|
||||
errprint('exe_timeout MUST be > 0\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('exe_timeout not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('exe_timeout')
|
||||
|
||||
|
||||
if 'fill_rate_mem' in config_dict:
|
||||
@ -3224,8 +3217,7 @@ if 'fill_rate_mem' in config_dict:
|
||||
errprint('fill_rate_mem MUST be > 0\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('fill_rate_mem not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('fill_rate_mem')
|
||||
|
||||
|
||||
if 'fill_rate_swap' in config_dict:
|
||||
@ -3238,8 +3230,7 @@ if 'fill_rate_swap' in config_dict:
|
||||
errprint('fill_rate_swap MUST be > 0\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('fill_rate_swap not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('fill_rate_swap')
|
||||
|
||||
|
||||
if 'fill_rate_zram' in config_dict:
|
||||
@ -3252,8 +3243,7 @@ if 'fill_rate_zram' in config_dict:
|
||||
errprint('fill_rate_zram MUST be > 0\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('fill_rate_zram not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('fill_rate_zram')
|
||||
|
||||
|
||||
if 'soft_threshold_min_swap' in config_dict:
|
||||
@ -3266,8 +3256,7 @@ else:
|
||||
if 'hard_threshold_min_swap' in config_dict:
|
||||
hard_threshold_min_swap = config_dict['hard_threshold_min_swap']
|
||||
else:
|
||||
errprint('hard_threshold_min_swap not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('hard_threshold_min_swap')
|
||||
|
||||
|
||||
if 'post_soft_action_delay' in config_dict:
|
||||
@ -3280,8 +3269,7 @@ if 'post_soft_action_delay' in config_dict:
|
||||
errprint('post_soft_action_delay must be positiv\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('post_soft_action_delay not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('post_soft_action_delay')
|
||||
|
||||
|
||||
if 'psi_post_action_delay' in config_dict:
|
||||
@ -3294,8 +3282,7 @@ if 'psi_post_action_delay' in config_dict:
|
||||
errprint('psi_post_action_delay must be positive\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('psi_post_action_delay not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('psi_post_action_delay')
|
||||
|
||||
|
||||
if 'hard_threshold_max_psi' in config_dict:
|
||||
@ -3308,8 +3295,7 @@ if 'hard_threshold_max_psi' in config_dict:
|
||||
errprint('hard_threshold_max_psi must be in the range [0; 100]\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('hard_threshold_max_psi not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('hard_threshold_max_psi')
|
||||
|
||||
|
||||
if 'soft_threshold_max_psi' in config_dict:
|
||||
@ -3322,8 +3308,7 @@ if 'soft_threshold_max_psi' in config_dict:
|
||||
errprint('soft_threshold_max_psi must be in the range [0; 100]\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('soft_threshold_max_psi not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('soft_threshold_max_psi')
|
||||
|
||||
|
||||
if 'warning_threshold_max_psi' in config_dict:
|
||||
@ -3337,8 +3322,7 @@ if 'warning_threshold_max_psi' in config_dict:
|
||||
'warning_threshold_max_psi must be in the range [0; 100]\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('warning_threshold_max_psi not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('warning_threshold_max_psi')
|
||||
|
||||
|
||||
if 'min_badness' in config_dict:
|
||||
@ -3351,8 +3335,7 @@ if 'min_badness' in config_dict:
|
||||
errprint('Invalud min_badness value\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('min_badness not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('min_badness')
|
||||
|
||||
|
||||
if 'min_post_warning_delay' in config_dict:
|
||||
@ -3365,15 +3348,13 @@ if 'min_post_warning_delay' in config_dict:
|
||||
errprint('min_post_warning_delay value out of range [1; 300]\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('min_post_warning_delay not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('min_post_warning_delay')
|
||||
|
||||
|
||||
if 'warning_threshold_min_swap' in config_dict:
|
||||
warning_threshold_min_swap = config_dict['warning_threshold_min_swap']
|
||||
else:
|
||||
errprint('warning_threshold_min_swap not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('warning_threshold_min_swap')
|
||||
|
||||
|
||||
if 'max_victim_ancestry_depth' in config_dict:
|
||||
@ -3386,8 +3367,7 @@ if 'max_victim_ancestry_depth' in config_dict:
|
||||
errprint('Invalud max_victim_ancestry_depth value\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('max_victim_ancestry_depth is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('max_victim_ancestry_depth')
|
||||
|
||||
|
||||
if 'max_soft_exit_time' in config_dict:
|
||||
@ -3402,15 +3382,13 @@ if 'max_soft_exit_time' in config_dict:
|
||||
'egative number\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('max_soft_exit_time is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('max_soft_exit_time')
|
||||
|
||||
|
||||
if 'post_kill_exe' in config_dict:
|
||||
post_kill_exe = config_dict['post_kill_exe']
|
||||
else:
|
||||
errprint('post_kill_exe is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('post_kill_exe')
|
||||
|
||||
|
||||
if 'psi_path' in config_dict:
|
||||
@ -3419,6 +3397,7 @@ if 'psi_path' in config_dict:
|
||||
try:
|
||||
psi_file_mem_to_metrics(psi_path)
|
||||
except Exception as e:
|
||||
# log()?
|
||||
print('WARNING: invalid psi_path "{}": {}'.format(
|
||||
psi_path, e))
|
||||
ignore_psi = True
|
||||
@ -3432,8 +3411,7 @@ else:
|
||||
if 'psi_metrics' in config_dict:
|
||||
psi_metrics = config_dict['psi_metrics']
|
||||
else:
|
||||
errprint('psi_metrics is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('psi_metrics')
|
||||
|
||||
|
||||
if 'warning_exe' in config_dict:
|
||||
@ -3443,8 +3421,7 @@ if 'warning_exe' in config_dict:
|
||||
else:
|
||||
check_warning_exe = False
|
||||
else:
|
||||
errprint('warning_exe is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('warning_exe')
|
||||
|
||||
|
||||
if 'extra_table_info' in config_dict:
|
||||
@ -3459,8 +3436,7 @@ if 'extra_table_info' in config_dict:
|
||||
errprint('Invalid config: invalid extra_table_info value\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('Invalid config: extra_table_info is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('extra_table_info')
|
||||
|
||||
|
||||
separate_log = conf_parse_bool('separate_log')
|
||||
@ -3507,8 +3483,7 @@ if 'min_mem_report_interval' in config_dict:
|
||||
errprint('min_mem_report_interval must be non-negative number\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('min_mem_report_interval is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('min_mem_report_interval')
|
||||
|
||||
|
||||
if 'psi_excess_duration' in config_dict:
|
||||
@ -3521,8 +3496,7 @@ if 'psi_excess_duration' in config_dict:
|
||||
errprint('psi_excess_duration must be non-negative number\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('psi_excess_duration is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('psi_excess_duration')
|
||||
|
||||
|
||||
if 'max_sleep' in config_dict:
|
||||
@ -3535,8 +3509,7 @@ if 'max_sleep' in config_dict:
|
||||
errprint('max_sleep must be positive number\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('max_sleep is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('max_sleep')
|
||||
|
||||
|
||||
if 'min_sleep' in config_dict:
|
||||
@ -3549,8 +3522,7 @@ if 'min_sleep' in config_dict:
|
||||
errprint('min_sleep must be positive number\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('min_sleep is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('min_sleep')
|
||||
|
||||
|
||||
if 'over_sleep' in config_dict:
|
||||
@ -3563,8 +3535,7 @@ if 'over_sleep' in config_dict:
|
||||
errprint('over_sleep must be positive number\nExit')
|
||||
exit(1)
|
||||
else:
|
||||
errprint('over_sleep is not in config\nExit')
|
||||
exit(1)
|
||||
missing_config_key('over_sleep')
|
||||
|
||||
|
||||
sensitivity_test_time = over_sleep / 2
|
||||
|
@ -240,15 +240,7 @@ hard_threshold_max_psi = 90
|
||||
|
||||
ignore_positive_oom_score_adj = False
|
||||
|
||||
7.2. Forbid negative badness
|
||||
|
||||
Description:
|
||||
Type: boolean
|
||||
Valid values: True and False
|
||||
|
||||
forbid_negative_badness = True
|
||||
|
||||
7.3.1. Matching process names with RE patterns change their badness
|
||||
7.2.1. Matching process names with RE patterns change their badness
|
||||
|
||||
Syntax:
|
||||
|
||||
@ -267,7 +259,7 @@ forbid_negative_badness = True
|
||||
by default.)
|
||||
@BADNESS_ADJ_RE_NAME 100 /// ^Web Content$
|
||||
|
||||
7.3.2. Matching CGroup_v1-line with RE patterns
|
||||
7.2.2. Matching CGroup_v1-line with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/system\.slice/
|
||||
|
||||
@ -275,15 +267,15 @@ forbid_negative_badness = True
|
||||
|
||||
@BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/user\.slice/
|
||||
|
||||
7.3.3. Matching CGroup_v2-line with RE patterns
|
||||
7.2.3. Matching CGroup_v2-line with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_CGROUP_V2 100 /// ^/workload
|
||||
|
||||
7.3.4. Matching eUIDs with RE patterns
|
||||
7.2.4. Matching eUIDs with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_UID -100 /// ^0$
|
||||
|
||||
7.3.5. Matching /proc/[pid]/exe realpath with RE patterns
|
||||
7.2.5. Matching /proc/[pid]/exe realpath with RE patterns
|
||||
|
||||
Example:
|
||||
@BADNESS_ADJ_RE_REALPATH 20 /// ^/usr/bin/foo$
|
||||
@ -333,11 +325,11 @@ forbid_negative_badness = True
|
||||
@BADNESS_ADJ_RE_REALPATH 900 /// ^(/usr/bin/stress|/usr/bin/stress-ng)$
|
||||
|
||||
|
||||
7.3.6. Matching cwd with RE patterns
|
||||
7.2.6. Matching cwd with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_CWD 200 /// ^/home/
|
||||
|
||||
7.3.7. Matching cmdlines with RE patterns
|
||||
7.2.7. Matching cmdlines with RE patterns
|
||||
WARNING: using this option can greatly slow down the search for a victim
|
||||
in conditions of heavily swapping.
|
||||
|
||||
@ -349,7 +341,7 @@ forbid_negative_badness = True
|
||||
|
||||
@BADNESS_ADJ_RE_CMDLINE -200 /// ^/usr/lib/virtualbox
|
||||
|
||||
7.3.8. Matching environ with RE patterns
|
||||
7.2.8. Matching environ with RE patterns
|
||||
WARNING: using this option can greatly slow down the search for a victim
|
||||
in conditions of heavily swapping.
|
||||
|
||||
|
@ -240,15 +240,7 @@ hard_threshold_max_psi = 90
|
||||
|
||||
ignore_positive_oom_score_adj = False
|
||||
|
||||
7.2. Forbid negative badness
|
||||
|
||||
Description:
|
||||
Type: boolean
|
||||
Valid values: True and False
|
||||
|
||||
forbid_negative_badness = True
|
||||
|
||||
7.3.1. Matching process names with RE patterns change their badness
|
||||
7.2.1. Matching process names with RE patterns change their badness
|
||||
|
||||
Syntax:
|
||||
|
||||
@ -262,7 +254,7 @@ forbid_negative_badness = True
|
||||
Example:
|
||||
@BADNESS_ADJ_RE_NAME -500 /// ^sshd$
|
||||
|
||||
7.3.2. Matching CGroup_v1-line with RE patterns
|
||||
7.2.2. Matching CGroup_v1-line with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/system\.slice/
|
||||
|
||||
@ -270,24 +262,24 @@ forbid_negative_badness = True
|
||||
|
||||
@BADNESS_ADJ_RE_CGROUP_V1 -50 /// ^/user\.slice/
|
||||
|
||||
7.3.3. Matching CGroup_v2-line with RE patterns
|
||||
7.2.3. Matching CGroup_v2-line with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_CGROUP_V2 100 /// ^/workload
|
||||
|
||||
7.3.4. Matching eUIDs with RE patterns
|
||||
7.2.4. Matching eUIDs with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_UID -100 /// ^0$
|
||||
|
||||
7.3.5. Matching /proc/[pid]/exe realpath with RE patterns
|
||||
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.3.6. Matching cwd with RE patterns
|
||||
7.2.6. Matching cwd with RE patterns
|
||||
|
||||
@BADNESS_ADJ_RE_CWD 200 /// ^/home/
|
||||
|
||||
7.3.7. Matching cmdlines with RE patterns
|
||||
7.2.7. Matching cmdlines with RE patterns
|
||||
WARNING: using this option can greatly slow down the search for a victim
|
||||
in conditions of heavily swapping.
|
||||
|
||||
@ -299,7 +291,7 @@ forbid_negative_badness = True
|
||||
|
||||
@BADNESS_ADJ_RE_CMDLINE -200 /// ^/usr/lib/virtualbox
|
||||
|
||||
7.3.8. Matching environ with RE patterns
|
||||
7.2.8. Matching environ with RE patterns
|
||||
WARNING: using this option can greatly slow down the search for a victim
|
||||
in conditions of heavily swapping.
|
||||
|
||||
|
@ -240,15 +240,6 @@ hard_threshold_max_psi = 90
|
||||
|
||||
ignore_positive_oom_score_adj = True
|
||||
|
||||
7.2. Forbid negative badness
|
||||
|
||||
Description:
|
||||
Type: boolean
|
||||
Valid values: True and False
|
||||
|
||||
forbid_negative_badness = True
|
||||
|
||||
|
||||
7.3.1. Matching process names with RE patterns change their badness
|
||||
|
||||
Syntax:
|
||||
|
Loading…
Reference in New Issue
Block a user