LINUX.ORG.RU

Второй релиз юзерспейсного OOM киллера oomd 0.2.0

 ,


1

1

Второй релиз юзерспейсного OOM киллера oomd 0.2.0, лицензированного под GPL-2.0 и написанного на C++.

Релиз 0.2.0 включает в себя множество обновлений и перестановок файлов, чтобы упростить пакет oomd для дистрибутивов Linux: https://github.com/facebookincubator/oomd/releases/tag/v0.2.0

RPM для только что выпущенного oomd v0.2.0 доступны в этом репозитории COPR: https://copr.fedorainfracloud.org/coprs/filbranden/oomd/

oomd ориентирован на высоконагруженные сервера и для работы требует поддержки PSI и cgroup2.

>>> Подробности

В предыдущих тредах мы выяснили:

- Не нужно.

- Нет никаких зависаний на линуксе.

- Скачайте больше оперативы.

- Выключите оверкоммит.

- Используйте лимиты cgroup/PAM_LIMITS.

- Включите своп, со свопом ничего не зависает.

- Руки надо поотрубать разрабам, которые пишут жирный софт.

/thread

hakavlad ()
Ответ на: комментарий от hakavlad

Гуляй, теоретик.

[root@s166-62-102-194 /]# fallocate -l 1G /swapfile
[root@s166-62-102-194 /]# chmod 600 /swapfile
[root@s166-62-102-194 /]# mkswap /swapfile
mkswap: /swapfile: warning: dont erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=387ade13-4308-4dd5-978a-c528883ccbe6
[root@s166-62-102-194 /]# swapon /swapfile
swapon: /swapfile: swapon failed: Operation not permitted
[root@s166-62-102-194 /]# whoami
root
[root@s166-62-102-194 /]# free -m
             total       used       free     shared    buffers     cached
Mem:          8192       8168         23          7          0       3374
-/+ buffers/cache:       4794       3397
Swap:            0          0          0
[root@s166-62-102-194 /]# ps aux | grep httpd | wc -l
102
[root@s166-62-102-194 /]#
windows10 ()
Последнее исправление: windows10 (всего исправлений: 2)

Скажите, а это национальная олимпиада такая - писать oom киллеры? Вот, ещё early oom вспоминаю, что-то ещё было. Причём все они напоминают костыли, сделанные русскими неосиляторами на коленке за пять минут.

tiinn ★★★ ()
Ответ на: комментарий от anonymous

Более того, oomd не просто киллер, он убивает сигруппу целиком. На десктопе от него потеряешь всю сессию. Для десктопа можешь использовать earlyoom или nohang (последний для Федоры тоже опакечен недавно).

hakavlad ()

Раз оно для серверов, то придётся оставить комментарии при себе. Но если какой нибудь криволапый универсальный дистр протащит это в штатную поставку...

kirill_rrr ★★★★★ ()
Ответ на: комментарий от hakavlad

Это не отменяет того, что ядро сломано. Оно и без сигруп должно в норме не повисать, если память кончилась.

ОК, но запихать нужные аппликухи в cgroups полностью устраняют проблему, не так ли?

tiinn ★★★ ()
Ответ на: комментарий от anonymous

При чем сломано оно только в фантазиях на лоре и опеннете, а во всем мире оно прекрасно работает

Проблема во всем мире давно обсуждается

https://lkml.org/lkml/2019/8/4/15

https://www.reddit.com/r/linux/comments/56r4xj/why_are_low_memory_conditions_...

https://www.reddit.com/r/linux/comments/aqd9mh/memory_management_more_effecti...

«How do I prevent Linux from freezing when out of memory? Today I (accidentally) ran some program on my Linux box that quickly used a lot of memory. My system froze, became unresponsive and thus I was unable to kill the offender. How can I prevent this in the future? Can't it at least keep a responsive core or something running?»

— serverfault

«With or without swap it still freezes before the OOM killer gets run automatically. This is really a kernel bug that should be fixed (i.e. run OOM killer earlier, before dropping all disk cache). Unfortunately kernel developers and a lot of other folk fail to see the problem. Common suggestions such as disable/enable swap, buy more RAM, run less processes, set limits etc. do not address the underlying problem that the kernel's low memory handling sucks camel's balls.»

— serverfault

«The traditional Linux OOM killer works fine in some cases, but in others it kicks in too late, resulting in the system entering a livelock for an indeterminate period.»

— engineering.fb.com

hakavlad ()
Ответ на: комментарий от tiinn

Не рашает, но не дает ей проявиться, если по полной обмазаться сигруппами. Но если не обмазываться - проблема все также есть. С таким же успехом можно и юзерспейсными киллерами обмазаться, и сказать, что проблемы нет.

hakavlad ()
Ответ на: комментарий от anonymous

То что у тебя под виндой не подключается своп не значит, что под Linux такая же фигня

Долбанись, наркоман.

[root@s166-62-102-194 ~]# cat /etc/issue
CentOS release 6.10 (Final)
Kernel \r on an \m

[root@s166-62-102-194 ~]#

Ты по ходу даже не знаешь, когда своп может не подключаться. Иди гугли, теоретик.

windows10 ()
Ответ на: комментарий от fsb4000

используйте zram и будет вам счастье.

Не будет.

Есть сферическая машинка в вакууме, допустим с 4 Гб мозгов. Там стоит сферический LAMP в вакууме, на котором хостится сферический сайт на Вродпрессе с фотками домашних котиков.

На этот сайт заходят люди. Без ZRAM на него смогут зайти условно 100 человек, после чего он повиснет. С ZRAM на него смогут зайти 150 человек, после чего он повиснет.

Причин по которым бывают всплески - лям и тележка. Краулеры, скрипткиддисы, мониторы типа pingdom итд. Важно, что любое превышение лимита прибивает сервер. И ООМ - тому решение костыль

windows10 ()
Ответ на: комментарий от RiseOfDeath

Я больше скажу, чаще всего он бесполезен. С точки зрения меня, и как пользователя какого-то ресурса, и как администратора этого ресурса, результат один и тот же - ресурс в дауне.

Почему это случилось - сервер завис, или ООМ прибил mysqld - нам уже неважно. Хотя для меня как для администратора есть небольшая разница КАК его поднимать - ssh / mysqld restart, или через iLO.

Но извне это выглядит почти одинаково.

windows10 ()
Ответ на: комментарий от hakavlad

OOM убивает heartbeat, а дальше - повезет если другая нода просто не сможет ничего сделать, хуже если сможет и у вас будет на разных нодах будут разные данные, которые должны быть не разными.

p.s. и не надо говорить мне про STONITH - в этом случае он тоже не поможет.

RiseOfDeath ★★★★ ()
Последнее исправление: RiseOfDeath (всего исправлений: 3)
Ответ на: комментарий от hakavlad

Почему не рестартится автоматически?

Зависший сервер ?

Да хз, я это никогда не настраивал, подозреваю там нужно ставить какой-то внешний аппаратный watchdog с пингом и хардверной ребуталкой.

Дома на Ардуине у меня такое есть. А в датацентре я честно говоря не знаю как это происходит.

windows10 ()
Ответ на: комментарий от RiseOfDeath

OOM убивает heartbeat.

вот для этого и есть оомк в юзерспесе. На самоммделе они предотвращают оом, а не убивают. Юзерспейсные демоны позволяют среагировать раньше и более гибко и не доводить до необходимости паники.

hakavlad ()
Ответ на: комментарий от windows10

Зависший сервер ?

Да хз, я это никогда не настраивал,

В юзерспейся, опять же, можно лего предотвратить зависание, а если кто умирает - того легко рестартнуть. Едва ли есть минусы.

hakavlad ()
Ответ на: комментарий от hakavlad

Юзерспейсные демоны позволяют среагировать раньше и более гибко и не доводить до необходимости паники.

А что тут можно сделать кроме ребута или рестарта прожорливых демонов (что почти равноценно) ? (К стати, вы в курсе, что модули ядра могут тоже отожрать дохрена памяти и тут ничего кроме выгрузки модуля не сделаешь)

RiseOfDeath ★★★★ ()
Последнее исправление: RiseOfDeath (всего исправлений: 1)
Ответ на: комментарий от hakavlad

В юзерспейся, опять же, можно лего предотвратить зависание, а если кто умирает - того легко рестартнуть. Едва ли есть минусы.

Да. И разумеется перед этим прописать innodb_force_recovery=5 и так далее и тому подобное.

Нет, это все МОЖНО делать уже постфактум, когда налез на грабли на конкретно своем сервере.

Искаропки тут вряд ли есть решение.

windows10 ()

OpenOrienteering Mapper != OOM

FTR, тем временем команда разработчиков The OpenOrienteering работает над ребрендингом «Mapper», в процессе подготовки к релизу v1.0:

New icon

atsym ★★★★★ ()
Последнее исправление: atsym (всего исправлений: 1)