LINUX.ORG.RU

low-memory-monitor: анонс нового юзерспейсного обработчика нехватки памяти

 low-memory-monitor, , , ,


3

1

Bastien Nocera анонсировал новый обработчик нехватки памяти для рабочего стола Gnome. Написан на C. Лицензирован под GPL3. Для работы демона необходимо ядро 5.2 или новее. Демон проверяет дефицит памяти через /proc/pressure/memory и при превышении порога отправляет через dbus предложение процессам о необходимости умерить аппетиты. Также демон может пытаться сохранить отзывчивость системы через запись в /proc/sysrq-trigger.

Страница проекта

Обсуждение на r/linux

Анонс в блоге автора

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

★★★

Проверено: Shaman007 ()
Последнее исправление: unfo (всего исправлений: 5)

Bastien Nocera анонсировал новый обработчик нехватки памяти для рабочего стола Gnome

Рабочему столу Gnome не хватает памяти?)))

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

Скорее всего он про то, что всё зависает так, что на нажатия не реагирует, а не про переназначенные хоткеи

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

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

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

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

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

дебиан. при выедании всей опертивы браузером система тупо виснет

Зависит от того какие пакеты установлены. В моем дебиане ничего не виснет при выедании памяти браузерами.

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

Залог успеха - во-время

вовремя установить earlyoom или nohang

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

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

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

Не могу ничего сказать, у меня вешается всё в таких условиях. Можно самому докостылять сбоку что-то, но сам oom killer нерабочий и дистрибутивы искоробки сломаны в этом моменте.

anonymous
()

а никого не напрягает то, что раньше всё работало, потом то что работало сломали и теперь чтобы починить то, что раньше и так работало, надо изобрести пачку велосипедов включая новую подсистему в ядре?

может просто откатить патч который сломал оом-киллер? не? слишком просто?

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

выделяемыми памятью и ресурсами должно заниматься ядро ОСи

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

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

новую подсистему в ядре?

Громко сказано. Достаточно добавить пару триггеров (на PSI и на MemAvailable/SwapFree) для своевременной реакции OOMK. Юзерспейсные демоны как раз делают эту простую вещь, которой так не хватает в ядре.

hakavlad ★★★
() автор топика

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

Уж лучше-бы OOM Killer в ведре дорабатывали и расширяли функционал. И для него уже и делали внешние утилиты.

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

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

Они уже давно так делают.

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

а psi - это не новая подсистема в ядре? а требование ядра 5.2 - это просто так совпало?

может ли быть такое, что ядро линукса уже много лет не может правильно распорядиться ресурсами и поэтому его приходится подпирать всё новыми и новыми костылями?

обсуждение на lkml конечно интересное, но нисколько не продуктивное. проблему никто чтоли не собирается решать? ну ждём systemd-oomd на kdbus тогда.

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

«А вообще - то, что новости на эту тему пишут на обычных, нелинуксовых IT-ресурсах - показательно. Кто там кричал, что линуксовый десктоп мёртв»

Полудохлой корове электродоилка не нужна !!!

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

«бредятина. выделяемыми памятью и ресурсами должно заниматься ядро ОСи, а не васянские скриптики на питончике и баше»

Ну что вы ! Это же креативный перфоманс для прогрессивных гиков.

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

откатить патч который сломал оом-киллер?

Вряд ли он есть.
Скорее виноват взрывной прогресс в i/o в последние годы.
reclaim на системе с ssd движется достаточно бодро, и формально ситуация выглядит под контролем.


Если задуматься, то zram должен даже сильнее ухудшать ситуацию с дедлоком в случае нехватки памяти, т.к. скорость обмена с ним выше.

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

а psi - это не новая подсистема в ядре? а требование ядра 5.2 - это просто так совпало?

Таки да, PSI - новая, но она занимается не только проблемами памяти. Это просто новый эффективный отслеживатель нагрузки на память, CPU и IO как в отдельных сигруппах, так и на общесистемном уровне. С ядра 4.20 PSI полностью юзабельно.

Однако описываемые юзкейсы зависаний - это юзкейсы, не требующие наличия PSI: это случаи, когда просто падает обем доступной памяти. Для диагностики этого достаточно ядра 2.6 (earlyoom прекрасно работает без всяких пси, и ядро моглобы тоже, но ядерщики не хотят этого).

hakavlad ★★★
() автор топика

low-memory-moni[46907]: Failed to add OOM memory pressure monitor: Could not write trigger to /proc/pressure/memory: Operation not supported

Что-то не работает эта балалайка. PS: сам дурак, забыл про psi=1.

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

какой реклейм на ссд если у людей в 2019 году выключен своп? мы вообще говорим об одном и том же?

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

какой реклейм на ссд если у людей в 2019 году выключен своп?

Не имеет значения, включён он или выключен.

reclaim за счёт неанонимных страниц происходит в любом случае и соответственно скорость i/o играет роль в любом случае.

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

По какой формуле считается?

Процент времени, затрачиваемого на ожидание получения ресурсов.

PSI=100 - все время уходит на ожидание ресурсов, PSI=0 - все отлично, задержек нет. В конфиге oomd фейсбука если PSI=60 - значит пора действоавать.

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

Еще немного и перестанет хватать памяти на все обработчики нехватки памяти

Вряд ли. earlyoom: 1 MB RSS, oomd: 5 MB RSS, nohang: 10 MB RSS.

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

Отключаете оверкомммит и живете довольно и счастливо, больше оом не приходит ибо память есть, и никаких ломем мониторов не надо - если память закончилась, будет null в ответ на malloc. Специально для тех кому не нравится оом

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

Отключаете оверкомммит и живете довольно и счастливо, больше оом не приходит

Обсуждали уже в соседней ветке. Отключенный оверкоммит - это риск неполной утилизации памяти и массового падения невиновных программ с ошибками, пруф: https://imgur.com/a/p9j67KA - здесь жиробас выделил себе всю память, но при этом не падает, а вместо него падпают маленькие процессы, пытающиеся выделить себе немножко памяти. Система при этом не зависла, но пользоваться ей при этом невозможно.

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

Надеюсь, это российский проект в рамках импортозамещения?

Поддержи отечественное оомкиллеростроение, установи себе https://github.com/hakavlad/nohang - не имеющий аналогов в мире демон для предотвращения OOM на десктопе.

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

Вентилятор выключен, не разлетелось :)

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

а можно подробностей, есть ли какие-то преимущества у этого low-memory-monitor перед существующими earlyoom и вашим nohang? Еще, вроде, oomd был, с ним что?

Спасибо за хороший вопрос. Вот обновленное сравнение киллеров:

earlyoom: простой, лёгкий, стабильный. VmRSS меньше мегабайта, нагрузка на процессор околонулевая. С релиза 1.3 стал очень надежен (исправлено возможное убийство невиновных). Лучший выбор для домохозяек, которым не нужны лишние настройки, а нужна хорошая работа из коробки. Поддержка PSI обсуждается (https://github.com/rfjakob/earlyoom/issues/100 - автор давно собирался добавить поддержку PSI, но в последнее время засомневался в целесообразности этого. Проводятся работы по убеждению сенсея в необходимости добавления поддержки PSI). Оф Репа: https://github.com/rfjakob/earlyoom / Присутствует в репах Ubuntu 18.04+ и Debian 10+. Начиная с версии 1.3 могу смело рекомендовать его в качестве дефолтного киллера для десктопа. Буду лоббировать его в качестве дефолтного киллера для Федоры (zram они уже собрались включать по дефолту, для полного счястья не хватает earlyoom, обсуждение тут: https://pagure.io/fedora-workstation/issue/98 ).

nohang: явная и очень гибкая конфигурация. Десятки параметров настройки в конфиге. Подробная печать свойств завершаемого процесса. Печать таблицы процессов со свойствами всех процессов перед корректирующим действием. Возможность реакции на PSI (pressure stall information, https://lwn.net/Articles/759658/) с выбором произвольной метрики и сигруппы для мониторинга. Возможность кастомизации корректирующих действий: отправка жертве любого сигнала (помимо SIGTERM/SIGKILL) или выполнение произвольной команды. Возможность тонкого влияния на badness процесса путем сопоставления его name, cmdline, cgroup, exe realpath c заданным регулярным выражением. Уведомления о низком уровне памяти (произвольной командой или через notify-send). Минусы: мало документации. Хочу релизнуться, но лень писать документацию. Можно рекомендовать тем, кому не хватает возможностей earlyoom (у последнего нет поддержки PSI и уведомлений о нехватке памяти).

oomd: работает только с сигруппами - минимальным объектом для корректирующего действия является сигруппа. Это означает, что при применении на десктопе oomd убъет всю сессию посредством SIGKILL. В связи с этим рекомендуется только для крупных высоконагруженных серверов. Плюс требования: работает только с systemd, cgroup2 должна быть единственной иерархией, иерархия cgroup_v1 должна быть отключена + требуется ядро с поддержкой PSI + своп должен быть включен (без свопа oomd бесполезен). Плюс oomd заметно грузит проц - нагрузка в 4.5% в порядке вещей (We see this internally too. Something like 4.5% of a core all the time. - https://github.com/facebookincubator/oomd/issues/79#issuecomment-520615498). Модульная архитектура во все поля, но издержки описаны выше.

low-memory-monitor: рано делать выводы. Идея просить процессы умерить аппетиты самостоятельно вызывает скепсис. В остальном этот киллер примитивен и не содержит других киллер-фич.

Итог таков: Если у тебя CentOS 6, или слабое железо, или не нужно ничего лишнего, или хочешь «быстро поставил и забыл» - ставь earlyoom. Nohang имеет дополнительные фичи, полезные как для десктопа, так и для сервера. oomd не трогай, если ты сам не из Фейсбука.

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

каких ещё *паскалях?! программа на C написана. и давление меряет в килоси — очевидно же.

anonymous
()

Что, ещё один? Всё что угодно, лишь бы не писать адекватную обработку нехватки памяти и политики свопинга для ядра.

kirill_rrr ★★★★★
()

необходимо ядро 5.2

Я лучше попозже зайду.

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

Потому что их интересуют только реально работающие патчи. А я, внезапно, не разработчик ядра.

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

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

Почему у меня приходит? Не ко мне конечно же, а к процессам.

Потому что ты своп не отключил. А у любителей отключать своп всё зависает.

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

Я пытался подвесить венду нехваткой памяти и свопа - не вышло - просто убивает процесс, пытающийся жрать лишнюю память.

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

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

Не могу ничего сказать, у меня вешается всё в таких условиях. Можно самому докостылять сбоку что-то, но сам oom killer нерабочий и дистрибутивы искоробки сломаны в этом моменте.

Не ври. Это ты сам своп выключил, а не авторы дистрибутивов.

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

какой реклейм на ссд если у людей в 2019 году выключен своп? мы вообще говорим об одном и том же?

Не у людей, а у задротов, нихрена не понимающих, что они делают, но уже лезущих потюнить систему. Для таких идиотов венда сама включает выключенный своп. А Linux этого не делает.

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

Угу, линукс теперь кладёт своп в зрам. Поскольку существует всего 1 вендор линукса, так будут делать все. А в венде я ставил своп 16 мб всегда, обнаружилось что некоторые древние игрушки настойчиво просят увеличить своп до гигов и отказываются запускаться. Видимо их авторы понимали что иначе в памяти постоянно будет находиться куча ненужного.

anonymous
()

Норм так 600 строчек =) Осталось только научить софт работать с dbus :D

- lmm - привет /usr/bin/loly поубавь аппетит! Память кончается!
- /usr/bin/loly - привет lmm! Сорян у меня течка =) ничем помочь не могу

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Black_Shadow

«Не у людей, а у задротов, нихрена не понимающих, что они делают, но уже лезущих потюнить систему. Для таких идиотов венда сама включает выключенный своп. А Linux этого не делает.»

Ложь и провокация.

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

нехватка памяти это слишком просто. есть/нет.
pressure в контексте управлением памятью никак иначе не перевести. потому и придумали pressure.

system-root ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.