diff --git a/README.md b/README.md index 6a55afb..b021d03 100644 --- a/README.md +++ b/README.md @@ -9,24 +9,25 @@ Nohang - аналог [earlyoom](https://github.com/rfjakob/earlyoom) с под - задача - препятствовать зависанию системы при нехватке доступной памяти, а также корректное завершение процессов с целью увеличения объема доступной памяти - демон на python3, RSS около 12 MiB - требуется Python 3.4+ и Linux 3.14+ -- периодически проверяет размеры доступной памяти, при дефиците памяти отправляет SIGKILL или SIGTERM процессу с наибольшим oom_score -- поддержка работы со zram, возможность реакции на mem_used_total +- периодически проверяет размеры доступной памяти, при дефиците памяти отправляет `SIGKILL` или `SIGTERM` процессу с наибольшим `oom_score` +- поддержка работы со `zram`, возможность реакции на `mem_used_total` - удобный конфиг с возможностью тонкой настройки -- возможность раздельного задания уровней MemAv, SwFree, mem_used_total для отпраки SIGTERM и SIGKILL, возможность задания в %, KiB, MiB, GiB -- возможность снижения oom_score_adj процессов, чьи oom_score_adj завышены (актуально для chromium) +- возможность раздельного задания уровней `MemAvailable`, `SwapFree`, `mem_used_total` для отпраки `SIGTERM` и `SIGKILL`, возможность задания в %, KiB, MiB, GiB +- возможность снижения `oom_score_adj` процессов, чьи `oom_score_adj` завышены (актуально для chromium) - лучший алгоритм выбора периодов между проверками доступной памяти: при больших объемах доступной памяти нет смысла проверять ее состояние часто, поэтому период проверки уменьшается по мере уменьшения размера доступной памяти -- интенсивность мониторинга можно гибко настраивать (параметры конфига rate_mem, rate_swap, rate_zram) -- память заблокирована с помощью mlockall() для предотвращения своппинга процесса -- по умолчанию высокий приоритет процесса nice -20, может регулироваться через конфиг -- предотвращение самоубийства с помощью self_oom_score_adj = -1000 +- интенсивность мониторинга можно гибко настраивать (параметры конфига `rate_mem`, `rate_swap`, `rate_zram`) +- память заблокирована с помощью `mlockall()` для предотвращения своппинга процесса +- по умолчанию высокий приоритет процесса `nice -20`, может регулироваться через конфиг +- предотвращение самоубийства с помощью `self_oom_score_adj = -1000` - возможность задания oom_score_min для предотвращения убийства невиновных -- min_delay_after_sigkill для предотвращения массовых убийств +- `min_delay_after_sigkill` для предотвращения массовых убийств - наличие системд юнита - ман страница сделана - инсталлятор и деинсталлятор есть - протестировано на Debian 9 x86_64, Debian 9 x86, Debian 8 x86, Fedora 28 x86_64 - вывод отчета об убийствах такого вида -```2018-Jun-07 04:55:16 Mem: 0 M, Swap: 454 M, Zram: 488 M +```bash +2018-Jun-07 04:55:16 Mem: 0 M, Swap: 454 M, Zram: 488 M mem_available < mem_term_level and swap_free < swap_term_level Try to send signal 15 to process python3, Pid 7281, oom_score 893 Success @@ -34,19 +35,22 @@ Success Установка ========= -```git clone https://github.com/hakavlad/nohang.git +```bash +git clone https://github.com/hakavlad/nohang.git cd nohang sudo ./install.sh ``` Удаление вместе с конфигом ========================== -```sudo ./purge.sh +```bash +sudo ./purge.sh ``` Удалить всё, кроме конфига ========================== -```sudo ./uninstall.sh +```bash +sudo ./uninstall.sh ``` Настройка