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.

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

★★★

Проверено: Shaman007 ()
Ответ на: комментарий от ya-betmen

До этого бывали иногда зависания, иногда с исходом в ресет. Полагаю, что если даже раз в год зависание, то лучше иметь демона, чем терять данные.

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

Да как бы лимиты по памяти и по кол-ву рабочих процессов должны соответствовать объёму имеющейся на хосте памяти, если хочется чтобы система не сваливалась в своп. В свопе система по сути не работает. И для приведённого примера это наверное рабочий кейс. А фейсбукеры пилят эту поделку от безисходности, потому что с одной стороны им надо как можно быстрее катить в прод фичи, и при этом кто там будет тщательно тестировать сколько ему(свежесобранному приложению) ресурсов надо в разных режимах работы

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

Не всегда это значение можно заранее просчитать.

Вот есть сервер. Там 64 Гб ОЗУ. Крутится сайт с объявлениями, типа olx. Все в порядке. При 1000 одновременно активных пользователей на сайте - занято где-то порядка 40 Гб, при этом в пул innodb отдано 16 Гб. И все хорошо.

Пока не включается гуглевый краулер....

windows10 ★★★★★
()
Ответ на: комментарий от ya-betmen

Из прибитого процесса данные волшебным образом сохраняются?

2 пути:

1. Юзер получает GUI уведомление о нехватке памяти, перестает запускать процессы и киллинга не поисходит вообще.

2. По умолчанию демон посылает SIGTERM (или производит другое мягкое корректирующее действие, например save_data.sh && kill $PID) - адекватные процессы при его получении завершаются более корректно: The SIGTERM signal is sent to a process to request its termination. Unlike the SIGKILL signal, it can be caught and interpreted or ignored by the process. This allows the process to perform **nice termination releasing resources and saving state** if appropriate.

3. В перспективе, как предлагалось выше, отправка SIGSTOP и ожидание, пока юзер сам завершит ненужное.

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

Шизофрения это не ориентация.

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

Юзер получает GUI уведомление о нехватке памяти,

Когда систему не трогаешь - память не должна утнкать и жор памяти начинается как реакция на действия пользователя. Вот например юзер фотожопит толстую картинку и решает применить эффект, на который памяти уже не хватает, скажи в какой момент он получит уведомление?

По умолчанию демон посылает SIGTERM

И как на него реагирует десктопный софт, прям сразу перестает жрать память?

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

как на него реагирует десктопный софт, прям сразу перестает жрать память?

Не только перестает жрать, но и освобождает уже занятую, ибо просто завершается.

Когда систему не трогаешь - память не должна утнкать

Согласен. Память вообще не должна утекать в идеальном мире.

скажи в какой момент он получит уведомление?

В тот момент, когда сервер уведомлений отправит уведомление. По умолчанию уведомления не отправляются, но юзер может включить и настроить удобные пороги, например 20% MemAvailable & 20% SwapFree.

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

Не только перестает жрать, но и освобождает уже занятую, ибо просто завершается.

Ты описал сигкилл, речь была про сигтерм

юзер может включить и настроить удобные пороги

Какие у тебя настройки? В какой момент ты получил бы уведомление в этой ситуации?

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Ты описал сигкилл, речь была про сигтерм

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

hakavlad ★★★
() автор топика
Ответ на: комментарий от ya-betmen

Какие у тебя настройки? В какой момент ты получил бы уведомление в этой ситуации?

20% доступной памяти, отправка уведомлений раз в 30 секунд (думаю это не слишком навязчиво) - именно эти цифры предлагаю по дефолту. Старое демо уведомлений, если еще не видел: https://youtu.be/ChTNu9m7uMU

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

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

Т.е. гудбай несохраненные данные

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

20% доступной памяти, отправка уведомлений раз в 30 секунд

Ок, ты редактируешь картинку, тебе приходит уведомление, что мало памяти. Твои действия?

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

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

Т.е. гудбай несохраненные данные

Было б что сохранять. Не всякому процессу есть что сохранять. Например, браузеры таки возможно обрабатывают сигнал - вкладки с большей вероятностью восстановятся после SIGTERM. Также встречал мнение, что базы данных делают нечто полезное при получении SIGTERM: Apparently postgresql does something useful on SIGTERM - https://github.com/rfjakob/earlyoom/issues/67#issuecomment-403245812

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

Если срочно нужно редактировние - закрою вкладки браузера, или весь браузер.

Почему ты уверен, что это поможет, ты знаешь сколько памяти задействует редактор при следующем действии?

ya-betmen ★★★★★
()

Пользуясь случаем, спрошу: а если у меня не systemd, как сделать так, чтобы nohang запускался со стартом компьютера?

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

/etc/rc.local

+ /usr/local/bin/nohang &

Конечно, есть более изящные способы. Надо спрашивать у ветеранов. Или таки исправить Makefile для поддержки нонсистемд.

Какая версия оси у вас, кстати?

hakavlad ★★★
() автор топика
Последнее исправление: hakavlad (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.