LINUX.ORG.RU

Выпуск earlyoom 1.1

 , ,


2

2

Спустя пять месяцев после предыдущего релиза вышел earlyoom 1.1. Earlyoom - демон, периодически (10 раз в секунду) проверяющий объем доступной памяти (MemAvailable, SwapFree) и, если доступной памяти окажется меньше заданного объема, то процессу с максимальным oom_score будет отправлен сигнал SIGKILL для предотвращения Out of memory. Earlyoom поддерживает отправку десктопных уведомлений об убитых процессах (с помощью notify-send), а также возможность задать с помощью regex имена процессов, убийство которых предпочтительно (опция --prefer) или убийства которых стоит избегать (опция --avoid).

Основные изменения:

  • Исправлена возможная инъекция shell-кода через всплывающие уведомления.
  • Время сна после неудачи убийства процесса снижено с 10 до 1 секунды.
  • Всплывающие уведомления теперь отправляются после убийства процесса, а не перед.
  • Поддержка --help в дополнение к -h.
  • Исправлена проблема неверного отображения имен процессов во всплывающих уведомлениях.
  • Исправлено возможное деление на ноль при использовании опции -S.

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

★★★

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

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

При oom работают.

Нет, из коробки большинство дистров не поддерживают Alt + SysRq + F. Из всего сочетания Alt + RysRq + REISUB срабатывает только Alt + SysRq + SUB в лучшем случае.

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

после появления cgroups2 какой в этих извращениях смысл? типа такой «чистильщик реестра» для нежелающих углубляться в сложные материи?

system-root ★★★★★
()
Ответ на: комментарий от slovazap

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

Два чаю этому господину!

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

Так одалист же говно. Ты не знал? Он только обсирает всё и всех. А я его.

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

Кнопка b ничем не отличается от хардресета. И если работает b, работают остальные. Просто без вывода на экран. Кстати e моя любимая в таких ситуациях, но если есть возможность перезагрузить, полезней сразу полную комбинацию прожать. Мало ли что там отвалилось. Лучше конечно не доводить до исчерпания свопа.

Лайтово это пытаться иксы перезапустить для начала.

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

после появления cgroups2 какой в этих извращениях смысл?

cgroups сложнее в настройке. Earlyoom же заточен под свою конкретную задачу и прост в настройке.

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

Лайтово это пытаться иксы перезапустить для начала.

Все верно, перезапуск сессии через Alt+SysRq+K хорошо помогает. REISUB - для запущенных случаев только.

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

Согласен про полную комбинацию, однако наиболее полезны на мой взгляд s и u. Была у меня ситуация когда из всего списка сработала только b, чему я сильно удивился.

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

Любят же сишники костыли велосипедить.

Грязный хак, обещает чуть позже переписать.

Вообще-то все любят, не только сишники.

hakavlad ★★★
() автор топика
Ответ на: Начал развитие аналогичный проект - nohang от hakavlad

а как работают уведомления? там в конфиге булев параметр и подробностей вроде не описано. Мне вот например сама по себе эта софтина не особо нужна, разве что для перестраховки. А вот показ уведомления, когда zram уже кончился и произошло УВЕЛИЧЕНИЕ потребления свопа былоб очень круто. тобеш если в свопе чтото уже было, и zram кончился - еще ненадо информировать. а вот как только своп хоть чутка (можно с трешольдом в 10 мегабайт) вырос при заполненном zram - пора орать. хотя возможно это очень специфичный сценарий и актуально только мне

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

Вообще-то все любят, не только сишники.

Сомневаюсь что код типа придёт в голову писать кому-то кроме сишников/крестовиков.

Грязный хак, обещает чуть позже переписать.

А куда ему спешить? Ах да, в си же не завезли нормальных строк, а навелосипедить своё решение - дело не быстрое

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

Шото я не понимаю в чём проблема, разве что с юникодом возникнут нежданчики. Но это на порядок эффективней нормального варианта. Оно потом в system скармливается что ли?

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

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

Шото я не понимаю в чём проблема, разве что с юникодом возникнут нежданчики

Не только. Даже ascii порежет.

Но это на порядок эффективней нормального варианта

Удачи потом выяснять что такое ___ ___

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

Каких-таких невалидных? Это что, если в имени процесса будет ' то всё, умирать оом киллеру?

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

Откройте для себя волшебные зависания волшебного штабильного линукса, когда никакие клавиши не работают вообще.

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

В имени файла такого быть не должно, а аргументы... Аргументы нам не нужны. Скорее умирать когда нам передают интересные комбинации и у нас сишные строковые функции с system наперевес. Я просто не в курсе что они там санитизируют.

Замены андерскорами лично меня раздражают, но вроде это распространённый метод санитизации. Юзеры любят пихать много всякого чего там быть совсем не можливо согласно общепринятым стандартам.

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

Пользователи интелорадеона должны страдать, линукс то при чём. Там вроде даже лицензия не gpl.

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

Earlyoom - демон

А сколько он жрет памяти?

Он жрёт девственниц.

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

система уже труп

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

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

На неубитом и не глючном железе, зависаний нет. Все проблемы на моей памяти были вызваны железными проблемами.

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

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

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

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

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

Sysrq b не помогает? Если помогло, то ядро не встало колом.

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

Здесь описана нехватка пропускной способности ввода-вывода. Ничего более. Железные проблемы.

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

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

Система как раз нужна для более-менее равного предоставления ресурсов множеству процессов, как бы мало этих ресурсов не было. Она не справляется.

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

Ядро сделано для обслуживания программ. Если оно себе лупит бесконечные циклы, даже будучи формально рабочим - оно не справилось со своей задачей.

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

ну конкретно у меня система встает колом каждый раз, когда пытается уснуть (suspend) Alt+SysRq+b не помогает

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

В имени файла такого быть не должно

Это почему же? Вроде же не дос.

Скорее умирать когда нам передают интересные комбинации

Убей демона за пять минут без прав рута.

и у нас сишные строковые функции с system наперевес

Можно было взять нормальный язык.

Замены андерскорами лично меня раздражают, но вроде это распространённый метод санитизации

Нормальный - экранировать одинарную кавычку и распечатать символ в символ. Внутри одинарных кавычек не происходит подстановка значений/выполнение кода.

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

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

Это же про RTOS, а не про ядро линукса.

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

Если оно себе лупит бесконечные циклы

А что оно должно делать, если io забито?

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

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

А что оно должно делать, если io забито?

Не забивать io. Поставить забивающий процесс на паузу, и дать проаботать остальным. Это не рокет сайнс, таким очевидным вещам уже десятилетия.

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

обычные ос это когда на разброс можно забить.

Вот оно и забито, чего жалуемся?

Не забивать io. Поставить забивающий процесс на паузу, и дать проаботать остальным.

Пиши на https://www.kernel.org/, в твоем случае это явно не стандартная ситуация. Еще раз повторю, в моей практике всегда виновато было глючное железо.

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

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

И это не мой случай, так ядро работает и разработчики в курсе.

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

Какой посоветуете?

Рекомендую попробовать разные языки и сравнить их. Лучше брать тот язык, который не принуждает к рутинным операциям для достижения элементарного результата. Есть ещё и некоторые не очень известные типа pony crystal

https://golang.org/pkg/os/exec/#example_Cmd_Run

https://crystal-lang.org/api/0.25.1/Process.html#run(command:String,args=nil,...

https://doc.rust-lang.org/std/process/struct.Command.html

Методы в этих языках достаточно похожи. К примеру проверил пример из go, так там даже не нужно вспоминать про экранирование.

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

Спасибо. Думаю попробовать реализовать алгоритм nohang на языке Go.

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

Можно было взять нормальный язык.

Какой посоветуете? Go, Rust или что нибудь другое?

Быдлокодеру хоть любой язык в руки давай - какая разница...

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

На моей тоже нет, но это не значит что её нельзя нажать. Читайте маны внимательно.

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

а как работают уведомления? там в конфиге булев параметр и подробностей вроде не описано.

Работают примерно так: os.system('notify-send «Preventing OOM» «chromium (Pid 3333) killed»' - это уведомления об убийствах.

Есть уведомления о низком уровне памяти. Для этих уведомлений есть параметр min_time_between_warnings, определяющий минимал время между уведомлениями.

А вот показ уведомления, когда zram уже кончился

Для этого есть параметр zram_max_warnings.

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

Работают примерно так
Для этого есть параметр zram_max_warnings.

да, я немного невнятно спросил.

допустим у нас свободно 5 гигов оперативы и весь zram пустой, а в обычном свопе лежит гига 4. это мой нормальный сценарий работы и никаких уведомлений при этом ненужно. теперь я запускаю чтото, что выжирает гиг оперативы - в этот момент активируется zram. молчим, работаем. память продолжает запонляться и зрам кончился, в свопе попрежнему 4 гига - памяти какбэ больше нет. МОЛЧИМ. и вот теперь если чтото еще попытается отожрать памяти - оно попадет в обычный своп (тобеш было 4 гига в свопе, стало 4+n) и вот тогда нужно уведомление. вот такой нетипичный сценарий, и как я понял zram_max_warnings тут мне не поможет.

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