The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск earlyoom 1.3, процесса для раннего реагирования на нехватку памяти

05.06.2019 03:09

После семи месяцев разработки опубликован выпуск фонового процесса earlyoom 1.3, который периодически проверяет объем доступной памяти (MemAvailable, SwapFree) и пытается на ранней стадии отреагировать на возникновения нехватки памяти.

Если объём доступной памяти меньше заданного значения, то earlyoom принудительно (через отправку SIGTERM или SIGKILL) завершит работу процесса, наиболее активно потребляющего память (имеющего самое большое значение /proc/*/oom_score), не доводя состояние системы до очистки системных буферов и мешающего работе своппинга (обработчик OOM (Out Of Memory) в ядре срабатывает когда состояние нехватки памяти уже достигло критичных значений и обычно к этому моменту система уже не реагирует на действия пользователя).

Earlyoom поддерживает отправку уведомлений о принудительно завершённых процессах на рабочий стол (с помощью notify-send), а также предоставляет возможность определения правил, в которых при помощи регулярных выражений можно задать имена процессов, завершение которых предпочтительно (опция "--prefer") или остановки которых стоит избегать (опция "--avoid").

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

  • Реализовано ожидание завершения процесса после отправки ему сигнала. Это устраняет проблему, заключающуюся в том, что earlyoom иногда убивает более одного процесса, когда одного будет достаточно;
  • Добавлен вспомогательный скрипт (notify_all_users.py) для уведомления всех залогиненых пользователей о завершении процессов через notify-send;
  • Исправлено некорректное отображение некоторых имён процессов, содержащих символы UTF-8;
  • Принят кодекс поведения (Contributor Covenant Code of Conduct).


  1. Главная ссылка к новости (https://github.com/rfjakob/ear...)
  2. OpenNews: Выпуск Nohang 0.1, предотвращающего OOM в пространстве пользователя
  3. OpenNews: Выпуск earlyoom 1.2, процесса для раннего реагирования на нехватку памяти
  4. OpenNews: Facebook открыл код для обработки ситуации нехватки памяти в системе
Автор новости: hakavlad
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50809-oom
Ключевые слова: oom, memory
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (3), 07:31, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +21 +/
    Напоминаю, что использование юзерспейсного обработчика нехватки памяти - это хорошая практика.

    Обзор основных демонов.

    Earlyoom: simple, stable, tiny. VmRSS меньше мегабайта, нагрузка на процессор околонулевая. С релиза 1.3 стал очень надежен (исправлено возможное убийство невиновных). Лучший выбор для домохозяек, которым не нужны лишние настройки, а нужна хорошая работа из коробки. Рекомендовал бы его в качестве дефолтного обработчика нехватки памяти для колясок.

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

    oomd: многообещающий, но пока недоступен для домохозяек: https://github.com/facebookincubator/oomd/issues/61 (не смог заставить его работать; требует больших танцев). Заметно грузит проц.

     
     
  • 2.12, evkogan (?), 11:18, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Интересное сравнение.
    Не понял только про oomd он грузит проц и при этом не работает?
     
     
  • 3.14, Аноним (14), 11:23, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Таки да. Он грузил проц, писал сообщение что вот сейчас кого-то убьет, но ничего не происходило.
     

  • 1.1, Аноним (1), 06:55, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +9 +/
    Лучше пользователям хрома не ставить это..
     
     
  • 2.6, Лапчатый девляпс бубунтёнак (?), 10:09, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Пользователь хромиума. Благдаря earlyoom гоняю кубунту 18.04 на 12.5-дюймовом безвентиляторном Xiaomi с 4ГБ ОЗУ. В арбочее время у меня запущены - хромиум, шлак, зум, несколько Konsole, Dolphin и может что-то ещё. Сейчас это основная рабочая машина, весит 1300г, хороша для путешествий. Хоть я и девляпс, но обхожусь без варганта, ибо пердукт нашей компании и в сотню гигабайт не влезает.
     
     
  • 3.7, Аноним (7), 10:10, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +12 +/
    Пердукт, да
     
     
  • 4.8, Лапчатый девляпс бубунтёнак (?), 10:20, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Таки да. Но пользуются им достаточно центровые и сильно примелькавшиеся шараги. Большую их часть ты даже знаешь.
     
  • 2.16, Аноним (16), 11:52, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Для юзеров хрома я изобрёл новый chromed. Как только процессы хромого обнаруживаются в системе, хромд немедленно их уничтожает, что делает вашу память мягкой и шелковистой.
    С опцией -d можно так же удалить и замаскировать пакет хромого во избежание рецидивов.
     
     
  • 3.17, Аноним (14), 12:15, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Как только процессы хромого обнаруживаются в системе, хромд немедленно их уничтожает

    Nohang можно так сконфигурировать, чтоб перниодически искал процессы хрома и убивал только их.

     
  • 3.44, Ддд (?), 01:15, 26/08/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В чем смысл?
     

  • 1.2, AVX (ok), 07:28, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Нет бы другие программы оптимизировать, так нет, сделаем ещё одну. Это как бабы: "что бы такого съесть, чтобы похудеть?".

    Я думаю, эти наработки нужно было в ядре реализовать, в том же обработчике oom. А параметры или режимы работы прямо в параметрах загрузки указать. Типа, используем файл с настройками такой вот, или режим работы вот такой.

     
     
  • 2.4, Аноним (14), 07:51, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Нет бы другие программы оптимизировать

    Эта программа ничем не хуже других и выполняет полезную работу.

    >Я думаю, эти наработки нужно было в ядре реализовать

    Предлагаешь - действуй. Эти разговоры что "надо бы" идут десятки лет, а воз и ныне там. У меня нет времени ждать, пока ядерные хакеры сподобятся реализовать нужный функционал в ядре. Я просто пишу демон, которые решает задачу в юзерспейсе с максимальной гибкостью.

    >используем файл с настройками такой вот

    https://github.com/hakavlad/nohang/blob/master/nohang.conf

     
  • 2.26, iPony129412 (?), 13:45, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Я думаю, эти наработки нужно было в ядре реализовать,

    А кому оно надо? Линукс - это Android, сервера, IoT. Там не нужно это.

     
     
  • 3.36, Gannet (ok), 02:03, 06/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ты бы шёл лучше с понями играться.
     
  • 3.38, Xasd5 (?), 08:02, 06/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Линукс - это Android, сервера, IoT. Там не нужно это.

    а для тех у кого линукс на ноутбуках -- тоже это не нужно:

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

    вместо того чтобы устанавливать какой-то-нахрн-убивальщик -- проще удалить "бракованную" программу и установить вместо неё другую.

     
  • 2.28, Ordu (ok), 15:22, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я думаю, эти наработки нужно было в ядре реализовать, в том же обработчике oom.

    Эти наработки можно *будет* реализовать в ядре, если из этого выйдет что-то достойное и достаточно простое. Но исследовать вопрос, что можно сделать и как это делать, лучше в userspace. Если тебе кажется, что они уже сделали что-то достойное перенесения в ядро, то инструменты разработки под ядро открыты, флаг тебе в руки.

     

  • 1.5, Аноним (5), 09:51, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Нет ведь просто оперативочки докупить. Надо какие-то оомкиллеры сидеть писать в поте лица. А так надел сандали, выбежал во двор, перешел дорогу, купил хлебушка и по пути с магазина домой прикупил на сдачу оперативочки.
     
     
  • 2.9, Андрей (??), 10:35, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Бывают ещё глюки, из-за которых прога очень резко съедает всё память, так что и дёрнутся не успеваешь, а потом сидишь долгими минутами и ждёшь, пока или самому удастся её прибить, или, наконец-то OOM догадается, что ОС уже какое-то время вообще не выполняет никаких полезных действий, а только так тихо сама с собою что-то делает.
     
     
  • 3.37, Аноним (37), 07:21, 06/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Я не жду. Если есть признаки, что всё повисло намертво, то просто жмякаю резет.
     
     
  • 4.42, Андрей (??), 11:23, 07/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В том то и дело, что тут не винда, а Линукс: по-настоящему намертво не повисает, а даже спустя 30-60 минут "подвисания намертво" всё вернётся как и было (не считая разорванных сетевых соединений по таймауту). Но столько ждать нерационально.
     
  • 2.18, Аноним (7), 12:44, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Домой пришел, тырк - а слотов свободных и нет, на прошлой неделе после обновления Chrome уже все забил, и того мало!
     
  • 2.35, трурль (?), 22:24, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ...не умеют минусаторы в сарказм, не умеют.
     
  • 2.43, qre4eretty23636 (?), 21:39, 08/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Много не купишь на зарплату 10-15 тысяч. рублей и на пенсию 8-14 тысячь. рублей. Отдают за комунальные услуги и на еду очень мало остаётся. Остальное идёт лесом. Массовое явление.
     

  • 1.10, ххх (?), 10:40, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    2010: первый в истории юзерспейсный киллер на перле
    https://stackoverflow.com/questions/2125812/what-is-the-best-way-to-prevent-ou

    2014: появился earlyoom
    2014: https://github.com/temoto/peacemaker, написан на golang: Kill processes that abuse system resources. Не получил развития, туп, прожорлив.

     
     
  • 2.39, freehck (ok), 11:13, 06/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > 2010: первый в истории юзерспейсный киллер на перле

    Не, не первый. Подобные вещи писали все, кому не лень. Писали на всём, на чём писалось. В основном на shell. И писали ещё в 90х-00х, инфа сотка.

     
  • 2.40, rshadow (ok), 12:02, 06/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > 2010: первый в истории юзерспейсный киллер на перле

    Апач кстати доработали. Там есть параметры на лимиты, после которой грохает обработчик.

    А для гуев и остального теперь есть cgroups =)

     

  • 1.11, Секта свидетелей Киллеговы (?), 10:54, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Любую проблему можно решить, если прибивать нужные процессы в нужное время в нужном порядке. Если вы не можете решить вашу проблему, убивая процессы, значит вы ещё не достигли должного уровня просветления и либо прибиваете не те процессы, либо прибиваете их в неправильное время, либо в неправильном порядке. Служителям секты свидетелей Киллеговы категорически запрещается пытаться осмыслить проблему с целью найти решение, которое не требует прибивания процессов. В случае обнаружения у служителя секты таких наклонностей он будет немедленно предан анафеме.
     
  • 1.13, Аноним (-), 11:23, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Хотелось бы ОТ ВСЕЙ ДУШИ поблагодарить разработчиков(-ка) и спросить его Яндекс.Кошелёк.

    rfjakob, я твой должник. Ты даже не представляешь от какого головняка ты меня спасаешь своей программулиной.

     
     
  • 2.21, анонимус (??), 13:00, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    использую gocryptfs от того же разработчика - дальнейшее развитие encfs, которая не развивается
     

  • 1.15, Аноним (14), 11:32, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://github.com/rfjakob/earlyoom/issues/133
    Ваша заявка принята.
     
  • 1.19, mmm (??), 12:52, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    For Debian 10+ and Ubuntu 18.04+, there's a Debian package.
    Для  Debian9 нет пакета?
     
     
  • 2.20, херргот (?), 12:56, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет. Ставьте через make (даже ести б был - был бы позапрошлой версии, это ж дебиан).
     
     
  • 3.32, Аноним (32), 20:07, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    тогда уж лучше checkinstall - так хоть удалить можно будет.
     

  • 1.22, mmm (??), 13:13, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо большое  разработчикам!
    В репах версия earlyoom 1.2-1. Когда ждать обновление?
    Файл с настройками earlyoom https://github.com/hakavlad/nohang/blob/master/nohang.conf здесь?
     
     
  • 2.23, Аноним (14), 13:17, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Файл с настройками earlyoom: /etc/defaults/earlyoom
     
  • 2.24, Аноним (14), 13:19, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >Когда ждать обновление?

    Скорее всего никогда. Ставьте последнюю весию с гитхаба.

     
  • 2.25, Аноним (14), 13:45, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Fix:
    Файл с настройками earlyoom:
    /etc/defaults/earlyoom
    cat: /etc/defaults/earlyoom: Нет такого файла или каталога
    user@PC:~$ cat /etc/default/earlyoom
    # Default settings for earlyoom. This file is sourced by /bin/sh from
    # /etc/init.d/earlyoom or by systemd from earlyoom.service.

    # Options to pass to earlyoom
    EARLYOOM_ARGS="-r 60"

    # Examples:
    ...

     

  • 1.27, nm0i (ok), 14:55, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Однажды он у меня убил preload, было смешно.
    А вообще огромное спасибо разработчикам, утилита работает отменно.
     
  • 1.29, Аноним (29), 16:06, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Самый лучший oom:

    /use/bin/say ‘Alexa! Order more RAM!’

     
     
  • 2.31, Лапчатый девляпс бубунтёнак (?), 18:37, 05/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    $ /use/bin/say
    bash: /use/bin/say: No such file or directory

    Вот потому и использую earlyoom

     

  • 1.30, Аноним (14), 17:14, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    картинка в тему https://imgur.com/a/pu1H1TL
     
  • 1.33, Аноним (37), 20:30, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё лишь бы не редизайнить подсистему виртуальной памяти. Ведь это ЯДРО, там могут и средним пальцем показать в направлении параши.

    Ещё раз: запустил Qt Creator - всё встало намертво. Запустил firefox - тоже. Потому что криво всё реализовано и переделывать никто не будет - дешевле памятью залить до объёма, достаточного для запуски Win 10 в виртуалке вместе со всем жрущим софтом и запускать всё потенциально жрущее только там.

     
     
  • 2.41, Аноним (41), 19:28, 06/06/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > запустил Qt Creator - всё встало намертво. Запустил firefox - тоже

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

     

  • 1.34, Аноним (34), 21:59, 05/06/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    А в наше время усе летало на 128 мегабайтах памяти, и кеды и гномы и веб...
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру