fix psi support

This commit is contained in:
Alexey Avramov 2019-01-03 00:05:44 +09:00
parent 408b71b4b3
commit d60bd4ca2b
2 changed files with 40 additions and 25 deletions

37
nohang
View File

@ -1016,6 +1016,12 @@ gui_notifications = conf_parse_bool('gui_notifications')
decrease_oom_score_adj = conf_parse_bool('decrease_oom_score_adj')
execute_the_command = conf_parse_bool('execute_the_command')
ignore_psi = conf_parse_bool('ignore_psi')
regex_matching = conf_parse_bool('regex_matching')
re_match_cmdline = conf_parse_bool('re_match_cmdline')
@ -1614,19 +1620,23 @@ psi_min_sleep_time_after_action = psi_avg10_sleep_time
##########################################################################
if psi_support:
if psi_support and not ignore_psi:
# ta0 = time()
# a0 = psi_mem_some_avg_total()
kill_psi_t0 = time()
term_psi_t0 = time()
avg_value = ''
while True:
if psi_support:
print(rline1(psi_path))
if psi_support and not ignore_psi:
#print(rline1(psi_path))
avg10 = psi_mem_some_avg10()
if print_mem_check_results:
avg_value = 'PSI mem some avg10: {} | '.format(str(avg10).rjust(6))
if avg10 >= sigkill_psi and time() - kill_psi_t0 >= psi_min_sleep_time_after_action:
time0 = time()
@ -1639,8 +1649,8 @@ while True:
find_victim_and_send_signal(SIGTERM)
term_psi_t0 = time()
else:
print('PSI is OK or psi_min_sleep_time_after_action did not pass')
#print('PSI is OK or psi_min_sleep_time_after_action did not pass')
pass
'''
@ -1701,26 +1711,29 @@ while True:
# Output avialable mem sizes
if swap_total == 0 and mem_used_zram == 0:
print('MemAvail: {} M, {} %'.format(
print('{}MemAvail: {} M, {} %'.format(
human(mem_available, mem_len),
just_percent_mem(mem_available / mem_total)))
just_percent_mem(mem_available / mem_total)),
avg_value)
elif swap_total > 0 and mem_used_zram == 0:
print('MemAvail: {} M, {} % | SwapFree: {} M, {} %'.format(
print('{}MemAvail: {} M, {} % | SwapFree: {} M, {} %'.format(
human(mem_available, mem_len),
just_percent_mem(mem_available / mem_total),
human(swap_free, swap_len),
just_percent_swap(swap_free / (swap_total + 0.1))))
just_percent_swap(swap_free / (swap_total + 0.1))),
avg_value)
else:
print('MemAvail: {} M, {} % | SwapFree: {} M, {} % | Mem'
print('{}MemAvail: {} M, {} % | SwapFree: {} M, {} % | Mem'
'UsedZram: {} M, {} %'.format(
human(mem_available, mem_len),
just_percent_mem(mem_available / mem_total),
human(swap_free, swap_len),
just_percent_swap(swap_free / (swap_total + 0.1)),
human(mem_used_zram, mem_len),
just_percent_mem(mem_used_zram / mem_total)))
just_percent_mem(mem_used_zram / mem_total)),
avg_value)

View File

@ -45,16 +45,6 @@ $SIGTERM_PSI_AVG = 60
$PSI_AVG_TIME = 3
#####################################################################
sigkill_psi_avg10 = 90
sigterm_psi_avg10 = 60
psi_avg10_sleep_time = 30
#####################################################################
1. Thresholds below which a signal should be sent to the victim
@ -86,6 +76,18 @@ swap_min_sigkill = 5 %
zram_max_sigterm = 50 %
zram_max_sigkill = 55 %
Response on PSI memory some avg10 value
(/proc/pressure/memory on systems with Linux 4.20+).
ignore_psi = True
sigterm_psi_avg10 = 60
sigkill_psi_avg10 = 90
psi_avg10_sleep_time = 30
#####################################################################
2. The frequency of checking the amount of available memory
@ -130,8 +132,8 @@ min_badness = 50
Valid values are non-negative floating-point numbers.
min_delay_after_sigterm = 1
min_delay_after_sigkill = 3
min_delay_after_sigterm = 0.2
min_delay_after_sigkill = 0.8
Процессы браузера chromium обычно имеют oom_score_adj
200 или 300. Это приводит к тому, что процессы хрома умирают
@ -352,7 +354,7 @@ print_config = False
Print memory check results.
Valid values are True and False.
print_mem_check_results = True
print_mem_check_results = False
Print sleep periods between memory checks.
Valid values are True and False.