попытка исправить баг в уведомлениях

This commit is contained in:
Alexey Avramov 2018-06-18 14:46:10 +09:00
parent 455b16aedd
commit d98b0d7d02
3 changed files with 14 additions and 19 deletions

View File

@ -56,7 +56,7 @@ https://2ch.hk/s/res/2310304.html#2311483, https://archive.li/idixk
- возможность задания `oom_score_min` для предотвращения убийства невиновных
- verbosity: опциональность печати параметров конфига при старте программы, опциональность печати результатов проверки памяти и времени между проверками памяти
- возможность предотвращения избыточного убийства процессов с помощью задания миниального `oom_score` для убиваемых процессов и установка минимальной задержки просле отправки сигналов (параметры конфига `min_delay_after_sigkill` и `min_delay_after_sigterm`)
- возможность показа десктопных уведомлений c помощью notify-send, с показом сигнала (SIGTERM или SIGKILL), который отправлен процессу, а также Pid, oom_score, VmRSS, VmSwap, которыми обладал процесс перед получением сигнала.
- возможность показа десктопных уведомлений c помощью `notify-send`, с показом сигнала (`SIGTERM` или `SIGKILL`), который отправлен процессу, а также `Pid`, `oom_score`, `VmRSS`, `VmSwap`, которыми обладал процесс перед получением сигнала.
- наличие `man` страницы
- наличие установщика для пользователей `systemd`
- протестировано на `Debian 9 x86_64`, `Debian 8 i386`, `Fedora 28 x86_64`

18
nohang
View File

@ -206,7 +206,7 @@ def find_victim_and_send_signal(signal):
)[2:-1].split(' '))
# отправляем уведомление всем залогиненным юзерам
for i in users_set:
root_notify_command = 'DISPLAY=:0.0 sudo -u {} notify-send "Nohang tried to prevent OOM" '.format(
root_notify_command = 'DISPLAY=:0 sudo -u {} notify-send "Nohang tried to prevent OOM" '.format(
i)
os.system(root_notify_command + info)
else:
@ -368,11 +368,8 @@ if 'print_mem_check_results' in config_dict:
elif print_mem_check_results == 'False':
print_mem_check_results = False
else:
print(
'Invalid print_mem_check_results value {} (should be True or False)\nExit'.format(
print_mem_check_results
)
)
print('Invalid print_mem_check_results value {} (should be True or False)\nExit'.format(
print_mem_check_results))
exit()
else:
print('print_mem_check_results not in config\nExit')
@ -386,11 +383,8 @@ if 'print_sleep_periods' in config_dict:
elif print_sleep_periods == 'False':
print_sleep_periods = False
else:
print(
'Invalid print_sleep_periods value {} (should be True or False)\nExit'.format(
print_sleep_periods
)
)
print('Invalid print_sleep_periods value {} (should be True or False)\nExit'.format(
print_sleep_periods))
exit()
else:
print('print_sleep_periods not in config\nExit')
@ -765,7 +759,7 @@ if print_config:
decrease_oom_score_adj, decrease_res
))
if decrease_oom_score_adj:
print('oom_score_adj_max: {}'.format(oom_score_adj_max))
print('oom_score_adj_max: {}'.format(oom_score_adj_max))
print('\nVI. DESKTOP NOTIFICATIONS')
print('desktop_notifications: {}'.format(desktop_notifications))

View File

@ -22,8 +22,9 @@ print_mem_check_results = True
Печатать ли время сна между проверками памяти и после отправки
сигналов. Можно установить в значение True для дебага.
Допустимые значения: True и False
(В этой ветке по дефолту True)
print_sleep_periods = False
print_sleep_periods = True
#####################################################################
@ -70,9 +71,9 @@ self_oom_score_adj = -1000
достаточно хорошо, успешно справляясь с резкими скачками потребления
памяти.
rate_mem = 4
rate_mem = 3
rate_swap = 1
rate_zram = 1
rate_zram = 0.5
#####################################################################
@ -114,13 +115,13 @@ zram_max_sigkill = 60 %
Значение должно быть целым числом из диапазона [0; 1000]
oom_score_min = 15
oom_score_min = 20
Минимальная задержка после отправки соответствующих сигналов
для предотвращения риска убийства сразу множества процессов.
Должно быть неотрицательным числом.
min_delay_after_sigterm = 0.2
min_delay_after_sigterm = 0.5
min_delay_after_sigkill = 3
Процессы браузера chromium обычно имеют oom_score_adj
@ -139,7 +140,7 @@ decrease_oom_score_adj = True
Допустимые значения - целые числа из диапазона [0; 1000]
oom_score_adj_max = 20
oom_score_adj_max = 50
#####################################################################