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

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` для предотвращения убийства невиновных - возможность задания `oom_score_min` для предотвращения убийства невиновных
- verbosity: опциональность печати параметров конфига при старте программы, опциональность печати результатов проверки памяти и времени между проверками памяти - verbosity: опциональность печати параметров конфига при старте программы, опциональность печати результатов проверки памяти и времени между проверками памяти
- возможность предотвращения избыточного убийства процессов с помощью задания миниального `oom_score` для убиваемых процессов и установка минимальной задержки просле отправки сигналов (параметры конфига `min_delay_after_sigkill` и `min_delay_after_sigterm`) - возможность предотвращения избыточного убийства процессов с помощью задания миниального `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` страницы - наличие `man` страницы
- наличие установщика для пользователей `systemd` - наличие установщика для пользователей `systemd`
- протестировано на `Debian 9 x86_64`, `Debian 8 i386`, `Fedora 28 x86_64` - протестировано на `Debian 9 x86_64`, `Debian 8 i386`, `Fedora 28 x86_64`

16
nohang
View File

@ -206,7 +206,7 @@ def find_victim_and_send_signal(signal):
)[2:-1].split(' ')) )[2:-1].split(' '))
# отправляем уведомление всем залогиненным юзерам # отправляем уведомление всем залогиненным юзерам
for i in users_set: 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) i)
os.system(root_notify_command + info) os.system(root_notify_command + info)
else: else:
@ -368,11 +368,8 @@ if 'print_mem_check_results' in config_dict:
elif print_mem_check_results == 'False': elif print_mem_check_results == 'False':
print_mem_check_results = False print_mem_check_results = False
else: else:
print( print('Invalid print_mem_check_results value {} (should be True or False)\nExit'.format(
'Invalid print_mem_check_results value {} (should be True or False)\nExit'.format( print_mem_check_results))
print_mem_check_results
)
)
exit() exit()
else: else:
print('print_mem_check_results not in config\nExit') 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': elif print_sleep_periods == 'False':
print_sleep_periods = False print_sleep_periods = False
else: else:
print( print('Invalid print_sleep_periods value {} (should be True or False)\nExit'.format(
'Invalid print_sleep_periods value {} (should be True or False)\nExit'.format( print_sleep_periods))
print_sleep_periods
)
)
exit() exit()
else: else:
print('print_sleep_periods not in config\nExit') print('print_sleep_periods not in config\nExit')

View File

@ -22,8 +22,9 @@ print_mem_check_results = True
Печатать ли время сна между проверками памяти и после отправки Печатать ли время сна между проверками памяти и после отправки
сигналов. Можно установить в значение True для дебага. сигналов. Можно установить в значение True для дебага.
Допустимые значения: True и False Допустимые значения: 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_swap = 1
rate_zram = 1 rate_zram = 0.5
##################################################################### #####################################################################
@ -114,13 +115,13 @@ zram_max_sigkill = 60 %
Значение должно быть целым числом из диапазона [0; 1000] Значение должно быть целым числом из диапазона [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 min_delay_after_sigkill = 3
Процессы браузера chromium обычно имеют oom_score_adj Процессы браузера chromium обычно имеют oom_score_adj
@ -139,7 +140,7 @@ decrease_oom_score_adj = True
Допустимые значения - целые числа из диапазона [0; 1000] Допустимые значения - целые числа из диапазона [0; 1000]
oom_score_adj_max = 20 oom_score_adj_max = 50
##################################################################### #####################################################################