правка конфига и ридми

This commit is contained in:
Alexey Avramov 2018-06-20 02:48:06 +09:00
parent 992a604a6b
commit 6bccc3402f
3 changed files with 10 additions and 9 deletions

View File

@ -35,12 +35,12 @@ https://2ch.hk/s/res/2310304.html#2311483, https://archive.li/idixk
### Зачем нужен nohang, если уже есть earlyoom? ### Зачем нужен nohang, если уже есть earlyoom?
- `earlyoom` завершает (точнее убивает) процессы исключительно с помощью сигнала `SIGKILL`, в то время как `nohang` дает возможность сначала отправлять `SIGTERM`, и только если процесс не реагирует на `SIGTERM` - отправляется сигнал `SIGKILL`. - `Earlyoom` завершает (точнее убивает) процессы исключительно с помощью сигнала `SIGKILL`, в то время как `nohang` дает возможность сначала отправлять `SIGTERM`, и только если процесс не реагирует на `SIGTERM` - отправляется сигнал `SIGKILL`.
- `earlyoom` не поддерживает работу со `zram` и не реагирует на общую долю `zram` в памяти (`mem_used_total`). Это может привести к тому, что система все также встанет колом, как если бы `earlyoom` и не было (если `disksize` большой, а энтропия сжимаемых данных велика). `Nohang` позволяет избавиться от этой проблемы. По умолчанию если доля `zram` достигнет 60% памяти - будет отправлен сигнал `SIGTERM` процессу с наибольшим `oom_score`. - `Earlyoom` не поддерживает работу со `zram` и не реагирует на общую долю `zram` в памяти (`mem_used_total`). Это может привести к тому, что система все также встанет колом, как если бы `earlyoom` и не было (если `disksize` большой, а энтропия сжимаемых данных велика). `Nohang` позволяет избавиться от этой проблемы. По умолчанию если доля `zram` достигнет 60% памяти - будет отправлен сигнал `SIGTERM` процессу с наибольшим `oom_score`.
### Некоторые особенности ### Некоторые особенности
- задача - препятствовать зависанию системы при нехватке доступной памяти, а также корректное завершение процессов с целью увеличения объема доступной памяти - задача - препятствовать зависанию системы при нехватке доступной памяти, а также корректное завершение процессов с целью увеличения объема доступной памяти
- демон на Python 3, VmRSS от 10 до 14 MiB в зависимости от настроек - демон на Python 3, VmRSS от 9.5 до 12.9 MiB в зависимости от настроек
- требуется ядро `Linux 3.14` или новее - требуется ядро `Linux 3.14` или новее
- периодически проверяет объем доступной памяти, при дефиците памяти отправляет `SIGKILL` или `SIGTERM` процессу с наибольшим `oom_score` - периодически проверяет объем доступной памяти, при дефиците памяти отправляет `SIGKILL` или `SIGTERM` процессу с наибольшим `oom_score`
- поддержка работы со `zram`, возможность реакции на `mem_used_total` - поддержка работы со `zram`, возможность реакции на `mem_used_total`

View File

@ -1,20 +1,21 @@
#!/bin/bash -v #!/bin/bash -v
cp -f nohang /usr/local/bin/ cp nohang /usr/local/bin/
chmod 755 /usr/local/bin/nohang chmod 755 /usr/local/bin/nohang
mkdir /etc/nohang mkdir /etc/nohang
chmod 755 /etc/nohang chmod 755 /etc/nohang
cp -f nohang.conf /etc/nohang/ cp nohang.conf /etc/nohang/
chmod 644 /etc/nohang/nohang.conf chmod 644 /etc/nohang/nohang.conf
gzip -k nohang.1 gzip -k nohang.1
mkdir /usr/local/share/man/man1 mkdir /usr/local/share/man/man1
chmod 755 /usr/local/share/man/man1 chmod 755 /usr/local/share/man/man1
cp -f nohang.1.gz /usr/local/share/man/man1/ cp nohang.1.gz /usr/local/share/man/man1/
chmod 644 /usr/local/share/man/man1/nohang.1.gz chmod 644 /usr/local/share/man/man1/nohang.1.gz
rm nohang.1.gz
cp -f nohang.service /etc/systemd/system/ cp nohang.service /etc/systemd/system/
chmod 644 /etc/systemd/system/nohang.service chmod 644 /etc/systemd/system/nohang.service
systemctl daemon-reload systemctl daemon-reload
systemctl enable nohang systemctl enable nohang

View File

@ -36,7 +36,7 @@ print_sleep_periods = True
В Fedora 28 значение True вызывает увеличение потребления В Fedora 28 значение True вызывает увеличение потребления
памяти процессом на 200 MiB, в Debian 8 и 9 такой проблемы нет. памяти процессом на 200 MiB, в Debian 8 и 9 такой проблемы нет.
mlockall = True mlockall = False
Установка отрицательных значений self_nice и self_oom_score_adj Установка отрицательных значений self_nice и self_oom_score_adj
требует наличия root прав. требует наличия root прав.
@ -140,7 +140,7 @@ decrease_oom_score_adj = True
Допустимые значения - целые числа из диапазона [0; 1000] Допустимые значения - целые числа из диапазона [0; 1000]
oom_score_adj_max = 20 oom_score_adj_max = 30
##################################################################### #####################################################################