diff --git a/README.md b/README.md index 313ace0..494b417 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,30 @@ The No Hang Daemon Nohang - аналог [earlyoom](https://github.com/rfjakob/earlyoom) с поддержкой zram и SIGTERM. + + + +### Зачем это нужно? + +Затем, этот демон реализует востребованный функционал. Судите сами: + +"А можете рассказать, как сделать OOM Killer более агрессивным? Например, в ситуации, когда приложение открыло/создало множество мелких файлов и держит их в памяти, при внезапной нехватке памяти ядро пытается высвободить эти файловые страницы, что вешает систему намертво со 100%-м дисковым I/O на несколько (десятков) минут. А ведь зачастую гораздо проще просто грохнуть само приложение с дальнешим его перезапуском." +https://habr.com/company/flant/blog/348324/#comment_10659202 + +"Говно какое-то этот оом-киллер, нихрена не работает. +Но чтобы это нормально работало, я думаю, нужен какой-то демон, который постоянно мониторит потребление памяти и прибивает тот процесс, который резко начинает набирать обороты. В общем сам этот демон будет проц грузить, хотя можно ограничить процессы, которые он будет проверять только пользовательскими процессами, добавить black-white list ну и настраиваемый интервал проверки. +Короче если кто-то напишет будет круто." +https://www.linux.org.ru/forum/general/13074074#comment-13074864 + +"Сегодня скормил пикарду 100-дисковое издание Бетховена и тот сожрал 16 гб памяти вместе с 8 гб zram (коэффициент сжатия был 3.5). Со swappiness 100 zram начал наполняться на 80% памяти, а когда сам достиг 80%, то сжатие продолжилось с новой силой и полной загрузкой ядра. По окончанию банкета система встала колом, потому что киллер опять сцуко не пришел (ждал 10 минут)." +https://www.linux.org.ru/forum/general/13074074/page1?lastmod=1481740875388#comment-13077387 + +"Система таки становится неюзабельной если продолжать стараться забивать ее вплоть до исчерпания RAM+ZRAM. Ничего неудивительного, памяти то нет. Но в случае с дисковым свопом ты начинаешь заранее замечать что дело плохо. По ощущениям ZRAM не тормозит вообще, потому ты ничего не подозреваешь до часа икс и система становится колом." +https://www.linux.org.ru/forum/talks/12684213?lastmod=1466676523241#comment-12684906 + +"И IRL ты никогда не знаешь, в какой момент момент твои данные перестанут умещаться в оперативку. Потому zram -- удел embedded систем, где это может быть детерминировано." +https://2ch.hk/s/res/2310304.html#2311483, https://archive.li/idixk + ### Особенности - задача - препятствовать зависанию системы при нехватке доступной памяти, а также корректное завершение процессов с целью увеличения объема доступной памяти - демон на python3, RSS около 12 MiB @@ -18,7 +42,7 @@ Nohang - аналог [earlyoom](https://github.com/rfjakob/earlyoom) с под - память заблокирована с помощью `mlockall()` для предотвращения своппинга процесса - по умолчанию высокий приоритет процесса `nice -20`, может регулироваться через конфиг - предотвращение самоубийства с помощью `self_oom_score_adj = -1000` -- возможность задания oom_score_min для предотвращения убийства невиновных +- возможность задания `oom_score_min` для предотвращения убийства невиновных - `min_delay_after_sigkill` для предотвращения массовых убийств - наличие `man` страницы - наличие установщика для пользователей `systemd`