URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 115884
[ Назад ]

Исходное сообщение
"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."

Отправлено opennews , 23-Ноя-18 20:29 
Состоялся первый выпуск проекта Nohang (https://github.com/hakavlad/nohang), в рамках которого подготовлен демон для GNU/Linux, обрабатывающий ситуации нехватки памяти и предотвращающий исчерпание свободной памяти (OOM, Out Of Memory). Демон написан на языке Python, потребляет около 10 MiB VmRSS и настраивается с помощью файла конфигурации (/etc/nohang/nohang.conf). По сравнению с аналогичным проектом earlyoom, nohang обладает некоторыми дополнительными возможностями.  Код открыт (https://github.com/hakavlad/nohang) под лицензией MIT.


Основные особенности:



-  Настраиваемая интенсивность мониторинга: если на сервере не предполагаются резкие перепады потребления памяти, то можно снизить нагрузку на процессор, снизив интенсивность мониторинга;

-  При нехватке памяти nohang сначала отправляет SIGTERM процессу с наибольшим oom_score. При дальнейшем падении уровня доступной памяти и отсутствии реакции на SIGTERM процесс с наибольшим oom_score получает SIGKILL. Уровни доступной памяти, при достижении которых должны происходить корректирующие действия, могут задаваться в процентах и в MiB;

-  Возможность отправки GUI уведомлений о результатах завершения процессов (реализовано с помощью notify-send);

-  Возможность отправки GUI уведомлений о низком уровне доступной памяти. В уведомлениях отображается уровень доступной памяти, а также Pid и имя процесса с наибольшим коэффициентом "badness". Предоставляется возможность настойки  уровня памяти, при котором отправляются уведомления, и минимальной периодичности отправки уведомлений (по умолчанию уведомления отключены). Рекомендуемые по умолчанию уровни памяти для отправки: одновременное снижение уровней SwapFree и MemAvailable до 20%;


-  Поддержка zram - mem_used_total в качестве триггера (может быть актуально для систем с большим размером хранилища (disksize) и низкой степенью сжатия сохраняемых в zram данных);

-  Предохранение от убийства невинных процессов: задержки после отправки сигналов (по умолчанию 0.5 секунд для SIGTERM и 3 секунды для SIGKILL) предотвращают возможное массовое убийство процессов, так как память при завершении процессов может освобождаться не сразу. Имеется возможность игнорировать процессы, имеющие коэффициент "badness" ниже заданного;

-  Возможность модификации "badness" процессов перед выбором жертвы через сопоставление имён процессов с заданным в конфигурации регулярным выражением;

-  Поддержка настройки запуска произвольной команды (например, sendmail или systemctl restart) вместо отправки сигнала SIGTERM жертве, если имя процесса-жертвы совпадает с заданным в конфигурации именем.

URL: https://github.com/hakavlad/nohang
Новость: https://www.opennet.me/opennews/art.shtml?num=49653


Содержание

Сообщения в этом обсуждении
"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 20:29 
Почему питон то? Если так хочется удобства (т.е. не C), то плюсцов бы хватило.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Your Mama , 23-Ноя-18 20:35 
Тут и C был бы Ок, ИМХО. Может перепишем на православном?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 22:22 
На 1С что ли?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 23:14 
Вы зря смеетесь.
Тут ко мне на днях подошли наши 1с макаки, и потребовали, что бы я на продакшн серверах поставил обработчика языка "OSCRIPT".
Глянул я это чудо россиянской мысли, посмотрел, увидел, что они даже файлы помощи ("╫ЄхэшхXML.htm" и "─рээ√хPOST╟ряЁюёр.htm" ), записали в некорректной кодировке, и как из интернета оно само тянет невесть какие скрипты из "репозитария" и запускает их, и мне стало плохо.
Выделил им для забавы отдельную машинку, так эти дегенераты умудрились превратить ее в вирусный рассадник.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Гентушник , 24-Ноя-18 18:51 
Вы про onescript?
Разработчики вендузятники, я пытался эту штуку на линуксе запустить, но оно работало довольно криво, ибо много виндово-специфичного захардкожено. Да и вообще оно на дотнете написано.

А насчёт скриптов из репозиториев... Сейчас у многих языков так заведено - собственный пакетный менеджер (npm, pip и т.д.). Пользоваться никто не заставляет, можете ставить все зависимости руками или пакетным менеджером вашего дистрибутива, если там есть такие пакеты (а их там скорее всего нет).


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено пох , 25-Ноя-18 14:21 
> Сейчас у многих языков так заведено

да помним, помним мы про npm leftpad!

> Пользоваться никто не заставляет

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

> (а их там скорее всего нет)

потому и нет, что нужны нечеловеческие усилия.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:20 
> да помним, помним мы про npm leftpad!

Eval в битмессаге тоже ничего так получился. Целевая аудитория кирпичи откладывали долго. А я 1 раз посмотрел на код этой штуки и выводы сделал о том какой безопасТности от такого ПО можно ждать...


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Илья , 23-Ноя-18 20:38 
Да какая разница? Это же простейшая тула. Питон почти везде установлен

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 21:29 
Если простейшая то и писать лучше на простом и не требовательном.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено d , 23-Ноя-18 22:36 
На нём и написали.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 04:17 
Не об интеллекте программиста речь была, а о ресурсах системы.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 06:14 
> почти

Ключевое слово. Например у меня его нету.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 23:39 
Специально взглянул исходник. #!/usr/bin/env python3

Его вообще почти нигде нет по-умолчанию.

Зачем такие программы писать на питоне?.... Почему нельзя сборку на C сделать?....


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 23-Ноя-18 20:38 
Если посмотреть на код, становится понятно, почему. В питоне батарейки в комплекте, как известно. А в плюсах без сторонних библиотек делать нечего - даже регэкспов нет (я знаю, что в распоследнем стандарте теоретически есть, но компиляторов и libstdc++ с поддержкой этих стандартов в продакшене вы не встретите). А код чуть менее чем полностью состоит из парзинга всякого разного в /proc, /sys и иже с ними. Такие вещи не только проще, но и безопаснее писать на безопасном языке, где нет целочисленных переполнений, строковых переполнений, выходов за границы массивов, небезопасных операций с указателями и прочего, особенно с учетом того, что программа работает под рутом и не должна добавлять уязвимостей.

Это можно написать на плюсах, но оно будет хотеть кучу библиотек (напр. монстра boost ради реэкспов) и безопасно это написать тоже будет намного сложнее.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено ноня , 23-Ноя-18 20:54 
Это все, конечно, хорошо, я целиком за питон.
Но, приличия ради, надо упомянуть что программы на питоне не утруждаются проверкой входных данных. Можно такое подсунуть, что самому питону поплохеет. Под рутом. Хорошо если просто вывалится с исключением.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Gannet , 23-Ноя-18 21:13 
Раз уж на то пошло, я за Assembler!

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено View , 24-Ноя-18 10:27 
Зачем им RegExp-ы? Может ещё нейросети туда завезти?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:21 
> Раз уж на то пошло, я за Assembler!

А для каких архитектур ты его умеешь? На ARM или MIPS смогешь портануть?!


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Gannet , 01-Дек-18 04:40 
Я не сказал, что я его умею. Но это ведь не мешает мне быть "За", правда?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено z , 24-Ноя-18 09:11 
иногда мои программы на языке *вставьте любой язык* тоже не утруждаются проверкой входных данных

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 21:18 
Я бы на вашем месте людей не дезинформировал по поводу поддержки последних стандартов. Да, C++17/20 ещё может и не везде и не в полной мере, но C++11 (частью которого <regex> и является) вполне себе поддерживается уже пару лет так точно в libstdc++, libc++ и что-там-у-ms. О качестве реализации говорить не буду, это вопрос отдельный.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 23-Ноя-18 21:29 
Пару лет - поддерживается. Проблема в том, что вы на сервере не встретите штатных компиляторов, которые были бы свежее пары лет. Возьмите свежайший релиз RHEL 7.6 (2018 год) - gcc и libstdc++ 4.8.5 - самые тривиальные регэкспы там или не скомпилируются, или будут непрерывно падать после компиляции. Возьмите еще поддерживаемый RHEL 6.10 (тоже 2018 год) - gcc 4.4, там вообще на эту тему ничего нет.

И то, что в распоследней убунте или федоре таки будет gcc / libstdc++, которые это умеют, никак не спасает - софт-то нужен на сервере.

Так что в жизни весь реальный код скорее всего будет использовать pcre (если на C), его же либо boost либо что-нибудь еще, если C++.

А в питоне модуль re был еще в версии 1.5 (1999 год), которая была где-то в районе 6 редхата. Который просто 6/6.1/6.2, не rhel 6.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Michael Shigorin , 23-Ноя-18 22:33 
Ну pcre, положим, тоже уж немолодое.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 23-Ноя-18 22:41 
Да, я всего лишь имел ввиду, что это отдельная внешняя зависимость, а в питоне "все в комплекте" (и, к слову сказать, от pcre он не зависит).

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 00:44 
Сейчас бы говорить о комплекте в ОС с репозитариями.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 22:58 
Да что за фигню вы несёте, регекспы давно превосходно работают.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ложечка , 25-Ноя-18 18:47 
>Да что за фигню вы несёте, регекспы давно превосходно работают.

Всё он правильно говорит. В libstdc++ 4.8.5 в текущем RHEL7, например заглушки стоят, которые кидают на всё regex_error. Тоже дико угорал с редхатовцев - конформный хедер <regex> есть, но ничего не работает, просто прелесть.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 22:51 
Вывод какой? Правильно, не юзать старьё.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено all_glory_to_the_hypnotoad , 23-Ноя-18 23:42 
Несёшь полнейшую чушь. Если взять мировых айти гигантов вроде G, FB и их братьев поменьше, которые в совокупности формируют подавляющую долю серверного ПО, то увидишь повальное использование самых свежих компиляторов вроде clang7, gcc6 и с++17. Гогно мамонта, без нормальных санитайзеров и человеческих отчётах об ошибках, в 2018 нафиг никому не сдалось. Но стандартыне re скорее всего никогда не станут популярными. Пользователи плюсов всё таки люди требовательные и им какие попало батарейки не подойдут, особенно если речь о серверном ПО.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Алексей Михайлович , 24-Ноя-18 01:45 
Лицокнига очень жалует D, кстати говоря. И memory safe, и компилится в нативный код, и много чего вкусного из коробки имеет.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено all_glory_to_the_hypnotoad , 24-Ноя-18 01:51 
В FB собирают маргиналов со всего мира в надежде на их талантливость, даже местами упарываются функциональщиной. Да в любой крупной компании найдётся букет используемых ЯП. Но основным ЯП серверной разработки кластерного ПО пока осаётся С/C++.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Алексей Михайлович , 11-Дек-18 10:17 
> В FB собирают маргиналов со всего мира в надежде на их талантливость,
> даже местами упарываются функциональщиной. Да в любой крупной компании найдётся букет
> используемых ЯП. Но основным ЯП серверной разработки кластерного ПО пока осаётся
> С/C++.

Netflix и eBay тоже, наверное, маргиналов по всему миру днём с огнём ищут.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Владимир , 24-Ноя-18 04:17 
Подождите, у меня у одного возник вопрос а наxера на продакшен сервере компилятор? Ради рантайма что ли?
Типа задеплоить с нужной либой рантайма компилятора это фуфуфу и моветон?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Акакжев , 24-Ноя-18 09:46 
> Подождите, у меня у одного возник вопрос а наxера на продакшен сервере компилятор? Ради рантайма что ли?

Это был такой... ораторский приём.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 24-Ноя-18 17:03 
> Подождите, у меня у одного возник вопрос а наxера на продакшен сервере
> компилятор? Ради рантайма что ли?
> Типа задеплоить с нужной либой рантайма компилятора это фуфуфу и моветон?

На продакшен сервере компилятора может не быть. Но почему код надо собирать на таком же дистрибутиве или как минимум такой же версии glibc и libstdc++ вам, надеюсь, понятно? (нет, это тоже не является абсолютным требованием, но если вы его не выполняете, то это создает пачку проблем, которые тем или иным способом нужно решать).

Так вот, если вы будете собирать код для сервера на базе RHEL7, например, то даже на другой машине стандартным gcc или clang - regexp все равно не заработает. Чтобы заработало, надо, к примеру, собирать свежим gcc с более свежим libstdc++ и тащить его рядом с приложением. Это, опять же, возможно; но *в жизни* такое себе может позволить очень небольшой процент софта. В стандартной репе Red Hat или даже каком-нибудь EPEL такого софта не будет. И поэтому по факту люди просто возмут boost.regex, например.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено asdasd , 23-Ноя-18 22:31 
C++11 с regexp не распоследний и реализуется это не рантаймом, а заголовками с исходниками.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 23-Ноя-18 22:39 
Возможно, но заголовки с исходниками (те libstdc++-devel) настолько же старые, насколько и gcc.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено asdasd , 23-Ноя-18 22:52 
Я все равно вас не понял. G++, Clang++, MSVC поддерживают. Что еще нужно?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 24-Ноя-18 17:05 
> Я все равно вас не понял. G++, Clang++, MSVC поддерживают. Что еще
> нужно?

Возьмите виртуалку с RHEL6/7 и скопимпилируете ваш код с помощью штатных g++ или clang и сразу все поймете. Если лень ставить, можно в AWS взять free tier с RHEL.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 00:53 
> компиляторов и libstdc++ с поддержкой этих стандартов в продакшене вы не встретите

Какой-то у вас замшелый продакшн. Поддержка regex появилась в gcc 4.9, который вышел в 2015.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 13:11 
В 2014-м

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 02:20 
И все же, подобные штуки стоило писать на системном языке, а не пайтоне.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 24-Ноя-18 05:51 
В linux'е пайтон системный язык. Для венды он инороден, в линуксах же последние лет 15-20 он системный. Используется не реже чем bash.

А вообще, чем языком молоть, если не согласен, возьми и напиши.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 06:19 
> в линуксах же последние лет 15-20

Как будешь объяснять что у меня его нету? При этом полноценный десктоп на C, C++, Qt.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 24-Ноя-18 07:01 
И что это за дистрибутив, если не секрет?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Илона , 24-Ноя-18 08:48 
Арч 'я у мамы конструктор'.

Питона у него нет для того чтобы писать в интернете что у него нет питона.

И сабж ему не нужен принципиально.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:17 
> Питона у него нет для того чтобы писать в интернете что у
> него нет питона.

У меня на половине дебианов тоже питона нет. Потому что тормозное глюкавое гуано, разваливающееся при каждом втором серьезном апдейте системы и жрущее 25 мегов RSS на отрисовку несчастного значка принтера - лично меня не прет. Конечно есть куда расти, можно значок на электроне переписать, глядишь и до 200 метров догонится, конечно.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 13:13 
>Как будешь объяснять что у меня его нету?

Могу только предположить, что у тебя не Gentoo.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:14 
> В linux'е пайтон системный язык.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено iPony , 24-Ноя-18 04:27 
> Если посмотреть на код
> нужных компиляторов в продакшене вы не встретите

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 13:14 
Кто бы про продакшон говорил, но не маководы.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 06:17 
> даже регэкспов нет

Вообще-то есть. И с помощью stl можно сделать всё, было бы желание. Для такого простого проекта stl хватило бы с головой.

> А код чуть менее чем полностью состоит из парзинга всякого разного в /proc, /sys и иже с ними

Пфф. Я простейший их парсер в 10 строк на чистом C++ писал без всяких регексп.

> небезопасных операций с указателями и прочего

В C++ это и не нужно будет. А насчёт того что питон (то есть сам интерпретатор, который ещё и компилировать в нативный код может, duh) не имеет уязвимостей насмешил, конечно. Глянь как-нибудь в их багтрекер.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено barmaglot , 24-Ноя-18 08:28 
>> даже регэкспов нет (я знаю, что в распоследнем стандарте теоретически есть, но компиляторов и libstdc++ с поддержкой этих стандартов в продакшене вы не встретите

Какая махровая чушь. GCC поддерживает C++11 уже около 7-ми лет точно (c 4.3.x если не ошибаюсь). Что у вас за продакшн такой ?


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 24-Ноя-18 17:10 
>>> даже регэкспов нет (я знаю, что в распоследнем стандарте теоретически есть, но компиляторов и libstdc++ с поддержкой этих стандартов в продакшене вы не встретите
> Какая махровая чушь. GCC поддерживает C++11 уже около 7-ми лет точно (c
> 4.3.x если не ошибаюсь). Что у вас за продакшн такой ?

RHEL любой версии. Впрочем, можете взять SLES 12, там ситуация аналогичная (SLES 15 вышел всего несколько месяцев назад, по факту мало кто еще обновился).

GCC C++11-то поддерживает, но не regexp. Поддержка regexp появилась в 4.9, но по факту много чего не работало до 5.x или 6.x.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Kir , 25-Ноя-18 12:32 
Монстр boost ради regex  это одна маленькая библиотека, которая линкуется статически

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 25-Ноя-18 17:24 
> Монстр boost ради regex  это одна маленькая библиотека, которая линкуется статически

Ну, некоторым не нравится, что это доступно только в составе 150+ МБ комплекта библиотек. Я, в целом, не против; главное с C++11 regexp осторожнее, тк реально очень много где не заработает.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено th3m3 , 23-Ноя-18 22:39 
Вот и я думаю, надо было писать на Rust.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 13:17 
О нет, уж лучше Python, хоть маргинальщина. Этого Rust нет в системе у ещё гораздо большего числа пользователей, чем Python.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено th3m3 , 24-Ноя-18 14:18 
> О нет, уж лучше Python, хоть маргинальщина. Этого Rust нет в системе
> у ещё гораздо большего числа пользователей, чем Python.

А он в системе и ненужен для запуска, это же не Python  :) Rust же компилируемый, будет просто бинарик.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено mikhailnov , 24-Ноя-18 16:01 
На e2k mike@ уже завез Rust? Нет и не будет в ближайшее время.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Анонидзе , 24-Ноя-18 10:15 
А чем он плох? Простой и очень удобный язык. Или ты хочешь, чтобы у демона, предотвращающего нехватку ОЗУ, постоянно текло это самое ОЗУ?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:11 
> Почему питон то? Если так хочется удобства (т.е. не C), то плюсцов бы хватило.

В такой штуке объективно достаточно гольного си с libc в зависимостях. Ну это если не халтурить. Заодно так минимум мест где она вообще может обломаться. Что для программы занимающейся сабжем наверное аргумент. Потому что если многомеговый интерпретер бидона повиснет где-то в недрах по причине того что у него не удался какой-то malloc, то что это не скрипт лопухнулся а рантайм - это будет довольно слабое утешение.

Но, понятное дело что питонисты о таких интимных особенностях системного программирования - как свиньи об апельсинах.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 20:33 
Эта тулза мне нужна.

29 выпуск федоры течёт не отображает какой процесс не освобождает память.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Michael Shigorin , 23-Ноя-18 22:34 
Возьмите lavaps :)

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним84701 , 23-Ноя-18 21:09 
earlyloom, nohang, oomd (https://www.opennet.me/opennews/art.shtml?num=48994)
Астрологи объявили полугодие юзерспейсных заменителей ООМ?

Интересно, мне одному такая формулировка режет глаз?
> Предохранение от убийства невинных процессов … возможное массовое убийство процессов

Вместо:
> "Предохранения от принудительного завершения непричастных процессов … возможное массовое завершение процессов"
>


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Gannet , 23-Ноя-18 21:45 
Предлагаю следующую:
Предотвращение геноцида процессов не замеченных в причастности к жадности памяти и излишней геперактивности в дисковом пространстве.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 23:37 
People for ethical treatment of digital entities. Stop killing them!

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 02:22 
Все это похоже на жуткие костыли.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Himik , 24-Ноя-18 23:13 
По-моему в FSF киллеров объявили вне закона, и вот опять...

"Выпуск Notabug 0.0.1, предотвращающего OOM в пространстве пл..."
Отправлено Andrey Mitrofanov , 29-Ноя-18 09:49 
Прочитал заголовок---^^, подумал "новая игрушка поттера".  Ан нет.

> Астрологи объявили полугодие юзерспейсных заменителей ООМ?

//Ага. Про это уже пошутили, надо держаться. Держаться.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 21:26 
а для докера эта тулза имеет смысл? вот с oom падает контейнер, какой профит предоставляет данная утилита, не вижу рабочей ситуации.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено DerRoteBaron , 24-Ноя-18 02:30 
такой, что контейнер будет перезапущен не тогда, когда памяти уже нет, почти все страницы с кодом выгружены на диск, а отзывчивость системы потеряна, а когда сильно плохо еще не стало, и деградация отзывчивости не будет существенной

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 22:02 
Почему на python, а не на nodejs?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 22:25 
в node.js был npm leftpad, а пихон это "искуственный дата майнинк дип лёрнинк бик дата интелект" с нескучным синтаксисом

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 22:26 
Это сарказм?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено th3m3 , 23-Ноя-18 22:41 
Радуйся, что не на Electron.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 22:45 
Зачем мелочиться, надо сразу на electron.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Xasd , 25-Ноя-18 14:54 
заменить python на electron ещё ни кто не успел предложить?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 23-Ноя-18 22:31 
Походу линю нужен особый сигнал OOM, сообщающий процессу, что если он сейчас немедленно не освободит память, то его прибьют. Всё лишь бы баг 12309 не фиксить.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 13:20 
За...ли вы уже со своим 12309, не смешно уже, придумайте шутку посвежее.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Кирилл , 24-Ноя-18 15:07 
Да, не смешно, потому что сколь бы не говорили о том, что 12309 давно исправлен (раза три уже говорили, что "ну вот теперь точно пофиксили"), он до сих поп проявляется и имеет место быть.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено none_first , 26-Ноя-18 13:59 
> Да, не смешно, потому что сколь бы не говорили о том, что
> 12309 давно исправлен (раза три уже говорили, что "ну вот теперь
> точно пофиксили"), он до сих поп проявляется и имеет место быть.

цитата с лурка: http://lurkmore.to/12309#.D0.9D.D0.B0_.D1.81.D0.B0.D0.BC.D0....
перевожу - виндовз крякнет чавкой с высокой вероятностью и работа виндовзусера закончится "как всегда" - перезапуском мсявого творения
и да - забивать память вской уйней и быдлопрограммами - это в крови виндовзусеров ;)


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:30 
> Да, не смешно, потому что сколь бы не говорили о том, что
> 12309 давно исправлен (раза три уже говорили, что "ну вот теперь
> точно пофиксили"), он до сих поп проявляется и имеет место быть.

До некоторых так за столько лет никак не дойдет что разные тормоза разныз конфигураций, ВНЕЗАПНО могут быть РАЗНЫМИ багами, по РАЗНЫМ причинам. Поэтому они как полные дауны (хотя почему "как") требуют починить баг. Который давно починен и закрыт. А написать новый баг, с описанием своей конфиги и проблем - умишка, определенно, не хватает.

...а у разработчиков бага видимо нет. Иначе они бы давно его прихлопнули. Кстати как-то так разрабатывают вообще любой софт. Фиксинг багов в винде ничем особо не отличается, кроме того что вас подинамят через 5 линий саппорта рассказывающих про то что мышку надо почистить и своп дефрагментнуть. А если у вас что-то не то, доказывать этим ботам что либо задолбаетесь. А когда через год сношений они наконец переведут вас на настоящих разработчиков, окажется что починить это в вашей винде - нельзя. Но, может быть, в следующей версии, через пару годков и починим, конечно. Такая интересная награда за такую долботню получается. Это кстати реально виденный пример из жизни, на примере большущей корпорации. И если так можно динамить даже их - то уж домашним юзером можно и вовсе подтереться, плюс-минус 1 юзерь по сравнению с плюс-минус 1 корп клиентом такого масштаба вообще ни о чем.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 13:32 
> До некоторых так за столько лет никак не дойдет что разные тормоза
> разныз конфигураций, ВНЕЗАПНО могут быть РАЗНЫМИ багами, по РАЗНЫМ причинам.

До некоторых за столько лет никак не дойдет, что 12309 давно стало собирательным обозначением.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 13:35 
Тогда почему вы пишите комментарии в интернете, а не фиксите баг

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 26-Ноя-18 01:58 
И процесс, получив такой сигнал, начинает лихорадочно шариться по своему адресному пространству выискивая что бы такого освободить, тем самым только увеличивая интенсивность пейджинга.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено SysA , 26-Ноя-18 12:19 
Bug 12309 - Status:     CLOSED CODE_FIX ;)

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Онаним , 23-Ноя-18 22:58 
Зачем оно? kernel oom handler'а мало?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 02:12 
Вроде неоднократно везде писали, что он слишком слоупочный и ненастраиваемый.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Онаним , 24-Ноя-18 10:56 
Что значит ненастраиваемый? Есть oom_adj, есть memory cgroups.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:33 
> Вроде неоднократно везде писали, что он слишком слоупочный

Если своп убрать нафиг или перенести в zram (эмулировать оперативку винчом слоупочно хоть там как) - более-менее нормальный становится. Хрустеть будет разве что на paging бинарников на диске, но это относительно немного. А на SSD так никто и не заметит, там быстро. Так что система тупанет несколько секунд да грохнет offender'а. Чаще всего по делу при том. А вес таки настраивается. И если кто ценный, можно настроить ему вес пониже и его постараются не убивать, кроме совсем уж ж@пных ситуаций.

Ну и написать такой тул на питоне - это просто глум над здравым смыслом.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено M i M , 23-Ноя-18 23:46 
Глянул.
Какой-то трэш и каша.
Комментарии и сообщения в перемешку на английском и на русском.
Весь код свален в одну кучу:
https://github.com/hakavlad/nohang/blob/master/nohang

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено M i M , 23-Ноя-18 23:57 
И да, ни одного теста не увидел.
Пожалуй, я бы побоялся такое запускать, даже если бы оно мне было нужно.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Нодежээсовцы и питонисты , 24-Ноя-18 00:02 
Ну если ты не понимаешь что-то это не значит что написано плохо. Писать юникс-демоны - задача сложная. Код сложный потому что тема сложная.

Linux, nohang, X.Org Server... у всех этих наших проектов высок порог вхождения, мы пишем системные вещи.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено M i M , 24-Ноя-18 00:05 
Код там не сложный, но его качество оставляет желать лучшего.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 24-Ноя-18 05:55 
> Весь код свален в одну кучу:

Там всего 1.5k строк, включая комменты и пустые строки, кои по моему в коде используются излишне часто. Если бы там было 5-10k можно было бы поныть, что слишком много в одном файле, а так...


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 16:25 
Это уже очень много. Есть принцип единой ответственности, который явно нарушается.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 24-Ноя-18 19:48 
> Это уже очень много. Есть принцип единой ответственности, который явно нарушается.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено zoonman , 25-Ноя-18 08:13 
># found experimentally
>zram_disksize_factor = 0.0042

Магические константы, забытые комменатрии, отсутствие какой-либо структуры. Код требует шлифовки.
Вообще его бы переписать на Go, работал бы быстрее и память меньше кушал.
Считаю текущий вариант прототипом и в продакшене такое бы использовать не стал.
Советую Алексею привести код в порядок, добавить тесты и бенчмарки.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 25-Ноя-18 14:40 
>># found experimentally
>>zram_disksize_factor = 0.0042
> Магические константы, забытые комменатрии, отсутствие какой-либо структуры. Код требует
> шлифовки.

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

> Вообще его бы переписать на Go, работал бы быстрее и память меньше
> кушал.

Перепиши, тебе никто не мешает.

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

Чтобы заиметь такое весомое мнение вовсе не обязательно было читать код, достаточно было заголовка новости, в нём чётко указано, что версия софтины 0.1.

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

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Xasd , 25-Ноя-18 15:00 
> в нём чётко указано, что версия софтины 0.1.

это много или мало?

если там было бы написано что версия софтины 345.0 (а не 0.1) -- это говорило бы о чём-то другом?


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 25-Ноя-18 15:10 
>> в нём чётко указано, что версия софтины 0.1.
> это много или мало?
> если там было бы написано что версия софтины 345.0 (а не 0.1)
> -- это говорило бы о чём-то другом?

Да.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено zoonman , 25-Ноя-18 23:12 
Это такой способ сделать тег. Поставил первый попавшийся тег, v0.1 показался нормальным.
Человек знакомый с версионированием сделал бы 0.0.1-alpha.
Т.к. это самая настоящая альфа.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 26-Ноя-18 02:59 
> Это такой способ сделать тег. Поставил первый попавшийся тег, v0.1 показался нормальным.
> Человек знакомый с версионированием сделал бы 0.0.1-alpha.
> Т.к. это самая настоящая альфа.

Бла-бла-бла. Ещё один начитавшийся учебников.

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

Я не понимаю о чём спор? О том, что номер версии не несёт никакой информации? Если так, то вы ничего не понимаете в информации. Открой Thinking Bayes (в гугле находится легко), и найдите там задачку про номер поезда. Суть её в следующем: мы, проходя мимо ж/д путей, увидели локомотив принадлежащий компании X, на этом локомотиве был порядковый номер, допустим, 37. Вопрос: сколько всего локомотивов у компании X? Если тебе кажется, что самый точный ответ на этот вопрос "не меньше 37", то я повторю свой совет: открой Thinking Bayes и почитай, причём в этом случае лучше сначала и до конца. А прочитав, осознай, что голова человека всегда thinking bayes, просто в большинстве случаев не используя формул, распределений вероятностей и python'а, а на голом автоматизме, нейроны в голове сплетены таким образом. Школьное образование и в первую очередь школьная математика внушают нам что всё это туфта, и логика -- единственный вид мышления, в реальности же логика вообще не мышление, а лишь "unit-testing" для мышления, с ограниченной сферой применимости. В реальности мозги работают не так, как представляли себе древние греки.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено none_first , 26-Ноя-18 14:36 
https://greenteapress.com/wp/think-bayes/ если про эту книгу - то название несколько другое ;)

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено zoonman , 26-Ноя-18 19:45 
> Бла-бла-бла. Ещё один начитавшийся учебников.

Пора кому-то повзрослеть. Учебники написаны на основе реального опыта других людей.
Они написаны людьми, которые давно прошли стадию "совершенно не важно, какой схемы версионирования придерживаются разработчики, лишь бы версия была бы меньше, чем 0.5, и стояла бы в продакшне", наломали дров и набили шишек, поняли, что они делали не так и постарались закрепить это в форме учебников.
Да, современное поколение любит х**к-х**к и в продакшен и пофиг что там. Большинство из таких не задерживается на работе больше года и прыгает на другую "галеру".
А потом за ними приходят люди, которые делают все по учебнику. Делают долго и занудно, после чего все "просто работает". Обычно после этих "школяров" разного рода OOMKillers не требуются. У них память не течет, поскольку все сделано по учебнику, и системы масштабируются автоматически, поскольку опять же все сделано по учебнику.
Вобщем, я не заинтересован в продолжении этой дискуссии. Вам нужен опыт. Получите его, начнете меня понимать.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 26-Ноя-18 22:55 
>> Бла-бла-бла. Ещё один начитавшийся учебников.
> Пора кому-то повзрослеть.

Да, несомненно.

> Учебники написаны на основе реального опыта других людей.

Но учебник -- это не опыт. Даже если это хороший учебник, то чтение его не заменяет опыта. Учебник, да и вообще всякие образовательные курсы, в том числе и в/о из вуза -- это лишь база, фундамент на котором можно строить свой опыт. Сам по себе фундамент без опыта бесполезен. И таймлайн примерно такой: человек читает учебники в вузе, после этого он приходит работать. Года три он работает следуя принципам из учебников, и после этого он становится хорошим специалистом. А после этого, _некоторые_ могут пойти дальше, поняв что _любой_ абсолютно принцип, и не только в программировании, _любой_ абсолютно теоретический закон имеет границы применимости. Что любая теория имеет границы применимости, и что, по-хорошему, начинать изучать любую теорию следует с изучения границ применимости. И если человек, заявляющий, что он знает какой-то принцип, не может сходу привести примеров ситуации, когда этот принцип неприменим, то этот человек не знает этого принципа.

> Они написаны людьми, которые давно прошли стадию "совершенно не важно, какой схемы
> версионирования придерживаются разработчики, лишь бы версия была бы меньше, чем 0.5,
> и стояла бы в продакшне", наломали дров и набили шишек, поняли,
> что они делали не так и постарались закрепить это в форме
> учебников.

То есть примера ты привести не можешь? Будешь разводить демагогию, вставать в красивую позу "я владею сакральным знанием недоступным посвящённым, поэтому даже обосновывать слов своих не буду, и не заинтересован в продолжении дискуссии", и вообще всячески пытаться свалить из дискуссии с видом победителя? Ну-ну. Продолжай в том же духе.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено zoonman , 25-Ноя-18 23:16 
Торвальдс уже давно не тот: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... ;-)

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 26-Ноя-18 03:00 
> Торвальдс уже давно не тот: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
> ;-)

Вот к чему ты это сказал? Во-первых, не то чтоб давно, во-вторых, мне-то что? Если Торвальдс принимает Code of Conduct, меня это разве к чему-то обязывает? Или заветы Торвальдса перестали быть заветами Торвальдса?


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено нах , 26-Ноя-18 12:31 
> Если Торвальдс принимает Code of Conduct, меня это разве к чему-то обязывает?

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

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 26-Ноя-18 13:37 
Ты о чём вообще, родный? Ты тред читал? Я сказал о том, что я следую завету Торвальдса: либо код на бочку, либо до свидания. При чём здесь потребляти, отправление патчей _торвальдсу_, маты в комментах и CoC? Твоя больная тема? Увидев её упоминание никак не можешь сдержаться и не высказаться? Против этого я могу предложить копинг стратегию: купи подушку, и каждый раз столкнувшись с упоминанием этой темы, кричи в подушку, пока не отпустит. Подушка заглушит звуки, и соседи тебя не убьют тогда за нарушение тишины и спокойствия.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Michael Shigorin , 26-Ноя-18 17:30 
Коллеги, прям озадачили.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено нах , 26-Ноя-18 17:59 
> Ты о чём вообще, родный? Ты тред читал? Я сказал о том,
> что я следую завету Торвальдса: либо код на бочку,

ты топ-топ менеджер линукса или сравнимого по размеру проекта? (Санитары! Этого в палату к Наполеону и Цезарю) Нет? Тогда какой тебе код, кто его тебе понесет?

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

Иначе его просто выбросят в помойку не читая, а тебя зобанят.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ordu , 26-Ноя-18 21:33 
>> Ты о чём вообще, родный? Ты тред читал? Я сказал о том,
>> что я следую завету Торвальдса: либо код на бочку,
> ты топ-топ менеджер линукса или сравнимого по размеру проекта?

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

> Тогда какой тебе код, кто его тебе понесет?

Не знаю кто, но советы точно не нужны.

> А если ты свой код на _чужую_ бочку - то вот теперь
> привыкай правильно именовать в нем переменные, без расовой дискриминации, и правильно
> комментировать, не оскорбляя альтернативно-одаренных.

Ты тупой? Простите за мой французский, вырвалось. Речь идёт о советчиках и коде. Советчиков надо посылать, с теми же кто принёс код можно работать. При чём здесь "правильно именовать переменные", "расовая дискриминация", "правильные комментарии", "оскорбление альтернативно-одарённых"? Я ещё раз повторю совет, чтобы справится с эмоциями при столкновении с болезненной для тебя темы, возьми подушку и прокричись в неё. И да, другой совет тоже повторю: перечитай тред.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 26-Ноя-18 19:09 
>zram_disksize_factor = 0.0042

Описание есть в начале файла.

>забытые комменатрии

Где?

>отсутствие какой-либо структуры

Структура есть, код разделен на разделы, разделенные строками ############################, и разделы прокомментированы.

>Вообще его бы переписать на Go, работал бы быстрее и память меньше кушал.

Уже. Старт дан. https://github.com/hakavlad/nofreeze

>Считаю текущий вариант прототипом

как вам угодно. Тем не менее, прототип прекрасно работает.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено zoonman , 26-Ноя-18 19:24 
Вот целый кусок забытых комментариев
https://github.com/hakavlad/nohang/blob/master/nohang#L934

Я не хочу придираться к деталям. Просто бросилось в глаза.

У вас хорошая идея, продолжайте ее развивать.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 26-Ноя-18 19:29 
Это прям свежий коммит, не от автора. Будет почищено вскоре. Ничего не забыто.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 28-Ноя-18 17:56 
Говнокод ещё тот

# НА МЕСТЕ!!!
if 'swap_min_warnings' in config_dict:
    swap_min_warnings = config_dict['swap_min_warnings']


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 29-Ноя-18 05:14 
Что Вас смутило в этом участке кода?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:40 
> Что Вас смутило в этом участке кода?

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:38 
> Комментарии и сообщения в перемешку на английском и на русском.

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

О том что проект надо майнтайнить, в входных данных может быть левак, а огроменный рантайм писаный как курица лапой неважно годится для системного програмизма - такому гению от софтостроя никто никогда не рассказывал конечно. Поэтому он презрительно смотрит на остальных - весь мир у его ног, падите ниц, жалкие червяки! Ведь этот голимый погонщик слонов наконец чего-то смог. Правда, как слон устроен он понятия не имеет, да и повадки он знает лишь целых 5 минут. Так что если слон вдруг взбрыкнет, плюс-минус пара раздавленых зрителей сущая фигня.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 02:42 
Решение несуществующей проблемы.
Намного логичнее выставить лимиты памяти в cgroups тем процессам, которые ее могут схавать. Да, браузеру.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 16:46 
>Решение несуществующей проблемы.

Проблема есть, look at https://www.reddit.com/r/linux/comments/56r4xj/why_are_low_m.../

>Намного логичнее выставить лимиты памяти в cgroups тем процессам, которые ее могут схавать. Да, браузеру.

Nohang ни к чему вас не обязывает. Делайте так, как считаете нужным.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 26-Ноя-18 02:45 
Это не проблема, а вопрос неопытного пользователя.
На который ему ответили. В том числе указав, что если есть предположения о том, что потребуется завершать в первую очередь, то можно предупредить проблему с помощью cgroups.

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

OOM - это аварийная процедура, цель которой сохранить работоспособность ядра. Она не должна быть комфортной для приложений в юзерспейсе. Нужно так конфигурировать систему, чтобы память не заполнялась полностью. Для этого нужно быть инженером, а не макакой. Но это уже оффтопик.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено anonkin , 24-Ноя-18 03:06 
*лицоладонь*

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

и будет эпично, если сам этот nohang подвесит систему))


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Нанобот , 24-Ноя-18 12:18 
> а если памяти не хватает, то конечно какие-то приложения будут прибиваться, этого не избежать

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 15:43 
>> а если памяти не хватает, то конечно какие-то приложения будут прибиваться, этого не избежать
> просто некоторые свято верят, что любую проблему можно решить, если прибивать процессы
> в правильном порядке

systemd что ли?


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Sw00p aka Jerom , 24-Ноя-18 03:59 
я вот только одного вкурить не могу - в чём разница между убитым процессом (из-за ООМ) и процессом который никогда не выполнится (то есть не использовать данное ПО, которое течет)?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Vitaliy Blats , 24-Ноя-18 04:13 
Вот уж типично линуксячий подход - создать технологию которая будет килять процессы для освобождения памяти, а потом создать тулзу которая будет мешать этой технологии которая киляет процессы для освобождения памяти.

Если процесс стал потреблять ОЗУ - он это сделал не зря, значит ему так нужно. Что будет если mysqld с криво настроенным innodb_buffer_pool_size получит SIGTERM? Он резко выгрузит все таблицы, кэши и тд ? Сомневаюсь. А значит получит SIGKILL и будет то же самое что и просто с OOM но при этом на серваке не будет стоять левое пихоновое поделие. А раз так, то зачем ставить это на сервер ?


Короче что только не придумают, лишь бы не сделать
fallocate -l 2G /anti_oom;mkswap /anti_oom;swapon /anti_oom


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Онаним , 24-Ноя-18 10:59 
> Короче что только не придумают, лишь бы не сделать

fallocate -l 2G /anti_oom;mkswap /anti_oom;swapon /anti_oom

Когда упрётесь в производительность например SAN - поймёте, почему не надо так делать.

Впрочем, это не отменяет того, что ядрёного механизма OOM вкупе с cgroups для контроля за oom-ситуациями более, чем достаточно.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Vitaliy Blats , 24-Ноя-18 14:24 
> Когда упрётесь в производительность например SAN

Переполнение памяти обычно бывает по двум причинам:

1. Владелец железки криворукий олень и установил несовместимое количество софта\железного ОЗУ на девайс. Ну например купил ВПСку шоб подешевше, с гигабайтом мозгов, и заставил ее обрабатывать веб на 1000 коннектов в секунду и на apache. Тогда его своп ДОЛЖЕН юзаться активно, и все это рано или поздно упрется в производительность. То же самое можно сделать на дорогом оборудовании, просто в других масштабах, суть не изменится.

2. Случайный всплеск. Ну вот поставили вы гигабайт ОЗУ на вашу ВПСку, все настроили тоненько тоненько, отлично работает, но раз в неделю ваш плагин на Вордпрессе делает бэкап, и тогда нужны дополнительные пару мегабайт ОЗУ на час.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Онаним , 24-Ноя-18 19:27 
1) да
2) см. п.1

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Онаним , 24-Ноя-18 19:28 
За исключением свопа в п.1 - как только скрипт у хостера заметит аномальную дисковую активность от непрерывно юзаемого свопа, он сразу же нерегламентированный IOPS порежет.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 22:34 
Понимаете ли, на линуксе совершенно отвратительные механизмы управления памятью. И если будет своп, то если ты откроешь  firefox, а в нём девтулзы, то выльется это в то, что сначала выжрется вся оператива, а потом вместо оперативы система начнёт юзать своп и всё встанет колом. А всё из-за того, что часть памяти должна быть зарезервирована и не свопиться никогда. Память ядра и ядерных модулей никогда не должна свопится, иначе оно будет лагать, а с ним и всё остальное, причём запросы будут копиться, и придётся делать резет. Память дисплейного сервера никогда не должна свопиться, иначе будут проблемы с управлением. Память оконного менеджера никогда не должна свопиться по тем же причинам, а ещё надо писать нормальные оконные менеджеры, легковесные и с аппаратным курсором, а не то говно, что сейчас. Память юзерспейс программ может свопиться, но не агррессивно, память должна делиться на "горячую" и "холодную" и свопить можно только холодную.

Просто разрабы зажрались на проспонсированных корпорациями машинах. А надо бы им поработать на 1м гиге.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Michael Shigorin , 24-Ноя-18 22:42 
Ну да, ну да.  LGBT-шники из MoFo жрут память тоннами, а виноват линукс.  И пишет нам об этом многолетний хакер ядёр и VM-ов, не иначе.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 06:48 
Firefox так себя ведет не важно под какой ОС. Из всех браузеров включая Edge. Именно Firefox сейчас жрет больше всего ОЗУ и нагружает CPU ради пресвятого JS.

Самый банальный пример: https://www.twitch.tv/videos/340281255?t=36m20s


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 15:46 
Как уже заметили,жрёт на всех ОС, а колом всё встаёт шт этого только на Лине.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено трурль , 27-Ноя-18 20:43 
> Как уже соврали,жрёт на всех ОС, а колом всё встаёт шт этого только на Лине.

fixed


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 06:41 
Чем-то же нужно мотивировать продажу 32+гб ноутбуков.
Поделия JetBrains на виртуалке с 4гб озу уже моментально пишут в swap после открытия Hello World.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 15:48 
IDE под JVM лучше вообще не использовать.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:45 
> Если процесс стал потреблять ОЗУ - он это сделал не зря, значит
> ему так нужно. Что будет если mysqld с криво настроенным innodb_buffer_pool_size
> получит SIGTERM? Он резко выгрузит все таблицы, кэши и тд ?

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

Если вдруг интересно как это выглядит: берешь роутер мыльницу, у половины из них conntrack, который структуры ядра настроен неверно и может стрескать больше памяти чем реально запаяно. Пускаешь торенты в много потоков. Смотришь что случается с ядром и всем остальным, когда с памятью душно, но забрать нельзя, потому что ее жрут структуры ядра (conntrack, не обеспеченный фактической памятью в сконфигуреном объеме). Хочешь такое же на десктопе? :) Точно? :)


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено RomanCh , 24-Ноя-18 13:53 
Какой дурдом. Пишем watchdog для контроля потребления ресурса на языке который сам любит пожрать этого ресурса. Напоминает государственную систему управления - нужно больше чиновников контролирующих потребление государственных средств!

Что только не сделают что бы cgroups + cgrulesengd не изучать...

PS

ps -C cgrulesengd -o rss
  RSS
1712


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено InuYasha , 24-Ноя-18 21:52 
А летом было вот это: https://www.opennet.me/opennews/art.shtml?num=48994 от фейсбука =)

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 24-Ноя-18 23:35 
Такое вот хреновое лето... (с)

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 02:37 
>> Демон написан на языке Python, потребляет около 10 MiB VmRSS и настраивается с помощью файла конфигурации (/etc/nohang/nohang.conf)

Подозреваю если его переписать на C/C++/Go/Rust/whatever он будет занимать 1 Мб памяти максимум?


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 10:31 
Feel free to implement?

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 14:05 
Больше. Earlyoom на C занимает 2 МБ.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 18:21 
>About 2 MiB (VmRSS), though only 220 kiB is private memory (RssAnon). The rest is the libc library (RssFile) that is shared with other processes.

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 30-Ноя-18 08:48 
> Больше. Earlyoom на C занимает 2 МБ.

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


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Проходил мимо , 26-Ноя-18 07:13 
Если его переписать на С, то, думаю, он будет занимать не более сотни килобайт.

У Rust бинарник, призванный анализировать лог почтового сервера и собранный с ключом --release занимает на диске порядка 400 Кб, а если собрать отладочную версию, то порядка 1.3Мб. При этом дебажная версия обрабатывает 500 Мб mail.log примерно за 2 минуты, а релизная примерно за 10 секунд. Я хз, как им удалось так затормозить дебажную версию, до этого ни в одном языке таких тормозов не было. И это не ошибка в алгоритме, это именно тормоза кода, так как --release работает быстро.

У Go бинарник на диске весит порядка 2Мб, если сделать ему strip, то от несколько худеет, но при этом это статическая версия, не имеющая никаких зависимостей.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Ддд , 25-Ноя-18 11:12 
Издевательство. Могу на Голанг сиатически слинкованный бинарник запилить и весить будет мегабайт

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 14:03 
Кстати, https://github.com/hakavlad/nofreeze

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним84701 , 25-Ноя-18 14:26 
> Кстати, https://github.com/hakavlad/nofreeze


func main() {
...
var t float64 = 0.001
var oo float64 = 1000000000 * t
var tt time.Duration = time.Duration(oo)

var yoba int8 = 1

for true {

        fmt.Println(yoba, yoba, yoba)

        time.Sleep(tt)
        //u++
        //u--
    }


мощно!


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено КГБ СССР , 25-Ноя-18 19:09 
Вот ведь как бывает: один аноним не поленился заглянуть в г-нокод, а другие заберут в продакшын. Программа как раз на должном уровне. :)

yoba, yoba, yoba!


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноним , 25-Ноя-18 15:33 
Очень хорошая и нужная вещь!!! Совместно с ulatencyd можно выжать максимум с компа!!!

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Аноим , 25-Ноя-18 21:48 
Вместо того, чтобы расширить функционал ООМ, запилили ненужную прослойку. Всегда так. Вместо того, чтобы обновить ifconfig - объявили ее deprecated и написали сразу веер новых фуфлокоманд.
Linux-way как он есть

"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено Stax , 25-Ноя-18 22:26 
> Вместо того, чтобы расширить функционал ООМ, запилили ненужную прослойку. Всегда так. Вместо
> того, чтобы обновить ifconfig - объявили ее deprecated и написали сразу
> веер новых фуфлокоманд.
> Linux-way как он есть

У вас какой-то баттхерт личного характера на тему устаревания ifconfig? Е-мае, больше 15 лет как iproute2 в ядре а ifconfig не более чем обертка, он раньше 2000 года появился точно. Где-то с ядра 2.2 еще. Можно было за этот срок и научиться пользоватся ip, не?

А по поводу linux-way - ну тут решили так, а что такого? Все равно стандарта никакого на ifconfig/route нет. Их синтаксис в линуксе, фряхе и солярисе разный, возможности тоже разные.


"Выпуск Nohang 0.1, предотвращающего OOM в пространстве польз..."
Отправлено нах , 26-Ноя-18 18:09 
> Все равно стандарта никакого на ifconfig/route нет. Их синтаксис в линуксе,
> фряхе и солярисе разный, возможности тоже разные.

то есть собственно, ровно до того места, где они одинаковые - кривой враппер, который еще в 2000м грозились выкинуть, эту самую совместимость вполне обеспечивает. Ну вдруг забрел админ bsd386 из криокамеры, и ему к ней непременно надо по ip подключиться, чтоб обратно залезть - на это хватит и его умений и того ifconfig.
(на самом деле там не так все солнечно - это два разных ядерных интерфейса, первый тоже для совместимости, используется, но крайне редко по делу, а второй теоретически может быть не вкомпилен в ядро)