Опубликован план включения по умолчанию в Fedora 32 фонового процесса earlyoom для раннего реагирования на нехватку памяти в системе. Если объём доступной памяти меньше заданного значения, то earlyoom через отправку SIGTERM (свободной памяти меньше 10%) или SIGKILL (‹ 5%) принудительно (завершит работу процесса, наиболее активно потребляющего память (имеющего самое большое значение /proc/*/oom_score), не доводя состояние системы до очистки системных буферов. Earlyoom позволит более оперативно реагировать на нехватку памяти, не доходя до вызова обработчика OOM (Out Of Memory) в ядре, который срабатывает когда ситуация становится критичной и система, как правило, уже не реагирует на действия пользователя...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=52136
Учитывая, что самый потребляющий память процесс, часто же и самый нужный, - это просто праздник какой-то.
https://github.com/rfjakob/earlyoom#preferred-processes
>The command-line flag --prefer specifies processes to prefer killing; likewise, --avoid specifies processes to avoid killing.
о, круто! теперь блотвареписатели будут заносить создателям earlyoom, чтобы те захардкодили их творения в несокращаемый вайтлист.
>теперь блотвареписатели будут заносить создателям earlyoom, чтобы те захардкодили их творения в несокращаемый вайтлист.В nohang-desktop критически важные для десктопа процессы бесплатно получат пониженный приоритет при выборе жертвы.
см https://pagure.io/fedora-workstation/issue/98#comment-618413
Зато будет весело, когда earlyroom будет убивать третьегном )
А потом earlyoom начнёт убивать earlyoom...
> А потом earlyoom начнёт убивать earlyoom...И начнется каскадный резонанс на отдельно взятом локалхосте безо всяких БАКов. Х-)
Вот это поворот!
лохохост ?
Если он начнёт убивать третьегном или системд, то я точно буду ржать под столом.
Системд — пусть убивает, мне прямо даже интересно посмотреть, как он это сделает.
Kernel panic - not syncing. Attempted to kill init!
Убить инит может только ядро.
Почему это не может сделать ни один из процессов юзерспейса — попробуйте нагуглить самостоятельно.
Разве инит не может убить или завершить сам себя? Недавно наблюдал кернел паник, загрузившись с init=/bin/bash и затем выполнив exit.
Убить (послать себе SIGKILL так, чтобы от этого умереть) — нет.
Завершить (exit) или заменить (exec) себя — может.
> Убить (послать себе SIGKILL так, чтобы от этого умереть) — нет.Точнее, может, но для этого самому иниту нужно зарегистрировать обработчик SIGKILL, в котором делать exit (или запись по адресу NULL, например).
Напиши kill -9 1 и все будет хорошо. Я так компьютер выключаю.
ДА ладно, всегда можно написать патч, позволяющий выстрелить себе в ногу!
> Убить инит может только ядро.С чего бы вдруг? :) Рут вполне может его вынести. И получить заслуженный кернелпаник.
Да, и системд это не только инит, но и чёртова туча других процессов. А в федоре они традиционно запущены все.
Сейчас те же браузеры успешно выставляют себе скор повыше и OOM-killer прибивает вкладки браузера первыми. Можно сделать с любым софтом.
Я кстати внезапно понял, в чём проблема жирнолиса. И почему из-за него умирают критичные процессы. Он этого не делает. Юзабилити 11/10.
earlyoom --prefer ^Web Content$В nohang-desktop планирую выдать лисе также повышенный приоритет при убийстве.
Только вот пусть он лучше заранее закроется, чем закончится память, система повиснет к чертям и придется reset делать.
не надо резет. есть alt+prntscr+b, специально для этих целей.
alt+prntscr+f завершает самый толстый процесс.
Просто b ничем не отличается от резета, нужен eisub. Но вообще это, правда, бесполезно, учитывая что есть f
Такой клавиши можно сказать, что нет
Нефиг покупать "ультрапуки" с софтварным выключателем и несъёмной батареей.
Китайское г — оно и есть китайское г, независимо от того, какая бирка там наляпана (apple или irbis).
А не все ли равно когда система зависла?
Разумеется все равно. Что сейчас зависнет, что через час - какая разница?
>Учитывая, что самый потребляющий память процесс, часто же и самый нужный, - это просто праздник какой-то.Во-первых, earlyoom по умолчанию завершает тот же процесс, что и завершило бы ядро при OOM - он выбирает процесс с наибольшим oom_score.
Во вторых, опции --prefer/--avoid позволяют удобнее защищать от убийства важные процессы.
значит, кого то начнут активно бить по рукам за говнокод [жокингле]
А если оно Chrome и Firefox будет постоянно выключать, то как жить?
Купить немного оперативки в ближайшем магазине
Хoрoший, гoдный пoтребитель. Чем большe тaких - тем лучше для нас. Спасибо, чтo вы есть.
HDD 1 Tb под Swap отдай, желательно IDE.
ещё флоппи-диск для свопа посоветуй! ))
пащиму айд?
Потому что еще более тормозные интерфейсы уже вышли из обращения и дисков на терабайт под них уже не делают...
Выкинуть earlyoom или ещё лучше федору.
Отличный совет — бороться не с причиной проблемы, а с кем попало.
Ну тут причина — гамносайты, жрущие память. Какое средство борьбы с ними, кроме как перестать посещать?
> Какое средство борьбы с ними, кроме как перестать посещать?"Не быть тебе в Москве, не жить тебе с людьми;
Подалее от этих хватов.
В деревню, к тетке, в глушь, в Саратов,
Там будешь горе горевать,
За пяльцами сидеть, за святцами зевать."
А. С. Грибоедов «Горе от ума»
Поэтому надо убивать не программы, а самые жрущие вкладки, чтобы снизить посещаемость дерьмосайтов. Но делать это должен сам браузер
Вполне симметричный ответ. Ведь юзерспейсный oom именно так и поступает.
Перезагружать вкладки и работать дальше, вместо потенциального хард ресета.
Видео отклеилось: отсутствие зависания при бесконечном открытии вкладок: https://www.youtube.com/watch?v=PLVWgNrVNlc
>Учитывая, что самый потребляющий память процесс, часто же и самый нужный, - это просто праздник какой-то. Очень согласен с вами, я даже ООМ не использую, а то некоторые Игори в Вино у меня часто превращают все в слайдшоу, а со всем этим и сохраниться не успеешь.(
>>Учитывая, что самый потребляющий память процесс, часто же и самый нужный, - это просто праздник какой-то. Очень согласен с вами, я даже ООМ не использую, а то некоторые Игори в Вино у меня часто превращают все в слайдшоу, а со всем этим и сохраниться не успеешь.(Докиньте свопа. У меня тормоза начинаются только когда своп кончается, либо когда из памяти начинают выдавливаться активные страницы. Но, скажем, когда игра использует 8 гб видеопамяти, а в видеокарте только 2, она начинает использовать обычную память, которой конечно же не хватает и своп на такое не рассчитан. Я увеличил своп до 16 гигов и игра прекрасно играется, разве что 1 загрузка долгая и катсцены могут немного подлагивать в 1 раз.
Секрет с лагами в том, чтобы быстро-быстро нажать ctrl+alt+sysrq+f (если не ошибаюсь), пока система ещё отзывчивая и не зависла целиком. Убит будет процесс с большим скором, это не обязательно текущее приложение. И можно предварительно развесить дополнительный вес однострочником в шелле, чтобы убивались именно наименее необходимые процессы. Но зачастую активное приложение в фокусе и ксть наименее важное, как это ни странно: фоном может идти многочасовой рендер и прерывать его никак не хочется. Чаще всего всё работает как часы, но я покрываюсь холодным потом каждый раз.
> Докиньте свопа. У меня тормоза начинаются только когда своп кончается, либо когда
> из памяти начинают выдавливаться активные страницы.Докидывать свопа в Линукс-системах ненужно, это не винда, если система свопуется, то это признак нехватки памяти, в случае Игорей следует выбрать одно из двух, либо докупить ОЗУ, либо выкинуть на мороз гомнопродукт потребления.
>Но, скажем, когда игра использует 8 гб видеопамяти,Ужос, что это за игра такая, которая жрёт 8 Гб видеопамяти. Я бы в такую не играл, там очевидно что-то с оптимизацией и опоясывающий гомнокод.
>а в видеокарте только 2,Если у вас видеокарта только 2 Гб, а игра ест все 8, то у меня для вас плохие новости
>она начинает использовать обычную память,
>которой конечно же не хватает и своп на такое не рассчитан.
>Я увеличил своп до 16 гигов и игра прекрасно играется,Ye-ye. Про прекрасно играется, жирновато очень. Я понимаю, новогодние праздники, привычка лопать всего помногу и за раз, но не стоит так перебарщивать.
>разве что 1 загрузка долгая и катсцены могут немного подлагивать
> в 1 раз.Огада.
Щито? Ви таки мне не верите? Обычная игра, дотнет там или что, я не разбирался. Frostpunk называется. И да, в требованиях на странице магазина врут - на это много жалоб было. Но я смог запустить и успешно пройти, именно докинув 16 гигов свопа. :)
Больше памяти - больше оом (:
Вот только это ещё один вирус... А если в Fedora, то скоро и во всех остальных.
в debian 10 есть пакет earlyoom, хочешь ставь и настраивай, а хочешь не ставьно если у меня chromium выжирает всю память то система встает колом, даже по ssh невозможно достучаться через termux, только reset
Хромиум? Четвёртый по лёгкости свопинга, после pdf/djvu читалок, гимпа и файерфокса по лёгкости свопинга?! Да научитесь вы наконец включать своп и настраивать этот чёртов zram! Даже hdd 2000-х годов на ide при 512М памяти справляется так, что жить можно.
> Даже hdd 2000-х годов на ide при 512М памяти справляется так, что жить можно.Как насчет спектрума? Тоже всё летает?
Я сказал что жить в принципе можно, а не то что там что то летает. По крайней мере не падает и никакие хард резеты ему не нужны. И даже в своппинг дольше пары минут не забуривается как тут пытаются представить.
> Да научитесь вы наконец включать своп и настраивать этот
> чёртов zram!Вопреки распространяемым заблуждениям, для сжатия подкачки предназначен zswap, а zram это такой вариант tmpfs, уменьшающий эффективный объём ОЗУ. https://www.kernel.org/doc/Documentation/blockdev/zram.txt
Но при этом значительно повышающий отзывчивость при свопинге. А эффективность zswap я покане наблюдал вживую.
Вирус тут Linux, который при нехватке памяти вешается, делая работу системы невозможной, и при наличии и при отсутствии свопа.
Это официальное признание поражения, что даже у красношляпы нет возможности пофиксить это долбанное ядро. А МС не будет - у них винда есть, кому не нравится говноядро - тот юзает винду.
> Это официальное признание поражения, что даже у красношляпы нет возможности пофиксить это
> долбанное ядро. А МС не будет - у них винда есть,
> кому не нравится говноядро - тот юзает винду.Пофиксить то легко. Отключите оверкоммит, и будет у вас маллок фейлиться, как в венде. А какие ещё варианты? Это физически не решаемо. Разве что резервировать памяти ядру на такие случаи, чтобы oom-killer не зависал. Идея просить процессы умерить аппетиты выглядит здраво, это всяко лучше насильного прибития части детей. Только дальше то всё равно работать киллеру придётся.
Вот да, пару килобайт памяти ему зарезервировать и будет идеально, а то когда все намертво зависает я так понимаю он даже запуститься не может.
И доблестный Хромиум проигнорит SIGTERM, SIGKILL. Прям вот верю. )))
> А какие ещё варианты?А починить ядерный OOM killer это не вариант??
да не оом-киллер надо чинить, а планировщик свопинга.
Ставлю анус, что ядерный киллер в ближайшие 10 лет не починят. Эпоха юзерспейсных киллеров началась с 2018: фейсбук использует oomd в проде, в Endless OS включен собственный psi-monitor. Федора собирается. Остальным дистрам приготовиться.
> А починить ядерный OOM killer это не вариант??Для этого надо заблоатварить ядро, закинув туда реализацию функций, которыми должен заниматься юзерспейс.
>и будет у вас маллок фейлиться, как в венде.Но в виндк-то не фейлится. В тех же программах тех же версий из тех же сырцов. На системах с в разы меньшей памятью.
Наверно там 32 битный софт и ему надо на 15% меньше памяти. Конечно фейлится, именно поэтому система не зависает, а софт знает, что память получить не удалось, в связи с чем не пытается использовать её.Можете мне поверить, у виндоус ровно такая же проблема и при исчерпании всей памяти и свопа она замечательно зависает целиком и полностью. И высока вероятность, что перезагружаться придётся с кнопки ресет, а перед тем она ещё хорошенько понасилует диски со свопом, если того в наличии много, но внезапно не достаточно много. Другой разговор, что в такой угол её надо постараться загнать, а у линукса это обычная ситуация.
И кстати, я очень оценил отсутствие киллера и magic-key в той ситуации. Но зато у виндоус есть хоткей для перезапуска графического драйвера, что не совсем то, но иногда помогает при зависании. Главное только не ждать, пока зависнет окончательно. Прямо как в линуксе.
Линукс легко доходит до ручки потому что у людей обычно и своп включён и высокий лимит на размер кеша записи.Когда какой-нибудь проге не хватает памяти, ей сначала отдаётся на откуп дисковый кеш чтения (от чего система начинает дико тупить). Затем, если памяти всё равно не хватает, забивается ВЕСЬ своп. Затем сбрасывается на диск ВЕСЬ кэш записи. Именно весь - не по частям, не сколько нужно для выделения памяти, а весь сразу, в один заход. Естественно, кэш может легко содержать несколько гигабайт ещё не закончившихся копироваться данных. Пока все они не окажутся на диске, система висит. И только ПОТОМ ядро начинает прибивать "лишние" процессы.
>Затем сбрасывается на диск ВЕСЬ кэш записи.Разве кэш не должен сбрасываться на диск по возможности, но сразу? То есть сначала пишется в кэш, программа продолжает делать что ей нужно, и сразу же кэш начинает сбрасываться на диск, а когда идёт чтение, то проверяется кэш, и выдаётся из кэша, если есть? Ведь иначе при отключении питания весь этот "гиговый" кэш пропадёт. Что-то я не замечал таких огромных потерь данных при вырубании питания.
Нет, не должен. Некоторые файлы создаются и почти сразу удаляются. Например, временные файлы, создаваемые при компиляции/линковке. Если сбрасывать их на диск с задержкой, можно потом не тратить время на удаление.При выключении делается тройной вызов sync, стартующий немедленный сброс всех данных на все диски. Потом отмонтируются разделы (вызов unmount завершается только когда все данные в кеше закончат писаться). В некоторых конфигурациях инита у вызова unmount может быть таймаут, и тогда данные действительно потеряются (systemd не использует там таймаут или использует очень длинный, - из-за этого он иногда зависает на неопределённое время при попытке выключения).
>При выключенииЯ не о выключении, а о пропадании питания. Иногда бывает даже в Москве, к сожалению. Так вот, таких огромных потерь данных я не замечал.
>Конечно фейлится, именно поэтому система не зависаетГлавное - верить.
>Наверно там 32 битный софт
64 семёрка с 64 битным QtCreator + Firefox, запущены одновременно. 3 гига. Норм.
64 Kubuntu Eoan с таким же qtcreator и firefox. оверкоммит включёт - всё виснет. оверкоммит выключен - при работающем firefox не то что qtcreator может заглючить и даже иногда вылететь, но даже программы из меню не стартуют (а из предварительно запущенной konsolи - стартуют), видимо кдешники туда вкорячили какую-то жрущую дофига прослойку.
Выводы о качестве операционок делайте сами.
>qtcreator
>НормПроблема наверняка в том, как он собран, я сталкивался с таким. Ну и всё же сравнивать легаси систему 20 летней давности, для которой уже давно не собирают софт, с современной — это несколько некорректно. Как минимум программы не в равных условиях работают. Но повторюсь, проблема скорее всего в вебкитах или чём-нибудь таком, на вскидку можно попробовать установить отсюда и он возможно будет лучше работать https://packages.msys2.org/package/mingw-w64-x86_64-qt-creat...
> Можете мне поверить
> у виндоус ровно такая же проблема и при исчерпании
> всей памяти и свопа она замечательно зависает целиком и полностью.
> И высока вероятность, что перезагружаться придётся с кнопки ресет
> Можете мне поверитьЧего тебе верить? У меня прямо сейчас под рукой две машины - винда и линукс. Скажу сразу - за последние 5 лет ресетал винду 0 раз. Линукс раз N-ть. Ну чё проверяем?
> Другой разговор, что в такой угол её надо постараться загнать
Забил прямо сейчас всю память/свап на винде - вообще под ноль. Проводник спокойно позволил кликнуть правой кнопкой мыши на муз. плеер и высвободить память - никаких ресетов, да при этом были лаги. Сделал тоже самое тут же на соседней слаке (забил всю память/свап) - просто тотальное замерзание системы - только аппаратный ресет, ни иксы не отвечают + нельзя переключиться по второй/третьей итп консоли.
> Можете мне поверить, у виндоус ровно такая же проблема
Так что верить тебе я не буду, я сам взял под рукой и проверил только что. Так что в винде "ровно такой же проблемы" не существует. А в линуксе она есть и это позор.
Так это и не загоняние её в угол. Лайтово можно попробовать её повесить виртуалками, для харда нужно уменьшить своп и запустить какую-нибудь жручую игрушку и она наверняка зависнет намертво. Только условие, что у видеокарты должно быть мало памяти, а в коде эта ситуация не должна обрабатываться корректно. Никакие хоткеи и тем более запуск программ работать не будут. :)
Прекрасно фейлится. Дайте к примеру в hyper-v виртуальной машине памяти не строго 2 gb например, а по умолчанию "от" и "до" и вы тут же увидите как гость сожрёт всю память и винда зависнет.
> Разве что резервировать памяти ядру на такие случаи, чтобы oom-killer не зависал.Там в исходниках есть строка mlockall(MCL_CURRENT | MCL_FUTURE | MCL_ONFAULT), которая для чего-то такого и предназначена
> кому не нравится говноядро - тот юзает...говноОС?
Пофиксить лаги при исчерпании памяти стоит не дороже самого дешёвого ssd. И ничего не стоит если он уже есть.А вот привести в приличный вид венду... Ну удачи вам там, чтобы и интерфейс, и памяти меньше полгига, и обновления адекватно и при этом без телеметрии и вирусов...
>стоит не дороже самого дешёвого ssd.Неверно. Стоит не дороже купленной на торрентах лицензии на 7ку.
ссд же портятся от использования, особенно под своп. не ссд с памятью надо покупать, а ядро фиксить.
>кириллСуть токова?
>>не ссд с памятью надо покупать, а ядро фиксить.См. ниже. У меня чуть меньше гига оперативки и браузер буквально живёт в свопе, иногда выпадая в оперу. О зависаниях системы речи не идёт вообще, так, фризы временами. Ядро по части управления паматью разумеется стоковое 4.4.
Сдыхающие от свопа ssd это устаревший миф. Всё из за того, что страничное управление памятью отлично помогает работе блока ftl.
>У меня чуть меньше гига оперативкиДа откуда же вы такие лезете? Уже даже в телефонах в среднем по 4гб.
Что за экономия на спичках, а? Они, видите ли, кде и гнома жирными считают когда Скайп, Слак, и Дискорд жрут по 2гб каждый на старте.И страдают и страдают. И ноют и ноют. Ой, мы бедные несчастные, у нас оперативки меньше гига, нам нужен oom. А заработать и доставить не пробовали? Или вообще взять железо новее в принципе? Планка древней оперативки стоит меньше одного стакана латте на Авито.
Тут даже лечить уже поздно.
>Да откуда же вы такие лезете?В магазинах навалом ноутов с 2Гб, например.
ИЧСХ, федора на таких без всякого earlyoom работает нормально. В смысле чуть тормозит из-за постоянного свопа, но не зависает. А вот машины с 32Гб памяти на той же самой федоре при нехватке памяти вешаются.
Доктор, успокойтесь. Снимите свое белое пальто и деньги с карточки и купите всем памяти. Судя по вашим ценам, вы не обеднеете.
>Тут даже лечить уже поздно.Себя лечи от потребительства.
>Планка древней оперативки стоит меньше одного стакана латте на Авито.
А вот я нихрена не вижу возможностей купить ддр2 на авито по нормальной цене. Материнка поддерживает 8 гигов максимум. И даже если куплю, то всё равно будет ппц: на материнке от MSI 4 слота, 2 из которых быстрые, 2 других - медленные. Если одинаковые планки вставлены только в одну пару, то включается 2хканальный режим. Соответственно нужно 2 планки по 4 гига, а текущие планки придётся на помойку выкинуть. При этом на авито ddr2 БУ почему-то стоит дороже ($200), чем ddr4 в магазе. Так что брать совершенно не хочется.
>А вот я нихрена не вижу возможностей купить ддр2 на авито по нормальной ценеЗначит искать не умеешь.
Я год назад покупал китайскую двухголовую мамку на сокет 1366 с рук за 7к, два камня (xeon x5570) шли с ней бесплатно как затычки в сокетах.
У другого человека взял 48гб samsung ecc reg ddr3 по 500 рублей за планку в 4гб.Итого планка в 4гб стоит меньше стакана норм кофе.
Итого комп вышел в сумме около 15к рублей, а хватит его ещё лет на 5.
ты бы ещё про ddr2 вспомнил
Я говорил про древнюю оперативку, а не ископаемую. Антиквариат дорого стоит во все времена. Раритет-с.Так что просто обнови железо. Платформы 5-7 летней давности сейчас по цене грязи продаются.
>An antique is usually an item that is collected or desirable because of its age, beauty, rarity, condition, utility, personal emotional connection, and/or other unique features.
>Antiques are usually objects that show some degree of craftsmanship, collectability, or a certain attention to design, such as a desk or an early automobile.Что из этого попадает к массово производимой ddr2 памяти?
>При этом на авито ddr2 БУ почему-то стоит дороже ($200), чем ddr4 в магазеА вот что. А должна быть дешевле современной. Как ддр3, например.
>При этом на авито ddr2 БУ почему-то стоит дороже ($200), чем ddr4 в магазеА вот что. А должна быть дешевле современной. Как ддр3, например.
А я как то забыл спросить разработчиков скайпа, можно ли мне купить RPi3 или для них там слишком мало оперативки.И я не страдаю и не ною, здесь ноют другие. Я их тыкаю носом в тот факт, что если у вас всё встало раком от исчерпания памяти значет вы что то делаете не так и костыли вам не помогут.
Единственное, что мы делаем не так - это то, что мы не организуем краудфаундинг на переписывание проблемной подсистемы ядра.
Это логично что никто особенно не парится по этому поводу, ведь для более чем 99% пользователей там нет никаких проблемных подсистем. Это ещё поискать надо такие дикие юзеркейсы, которые одним вызовом выжирают более 20% оперативки и не дают свопу выполнить свою работу. А фанатики, отключающие своп вообще и надеющиеся на аварийную подсистему.
** фанатики не в счёт.
> Это официальное признание поражения, что даже у красношляпы нет возможности пофиксить это долбанное ядро.Ну почему.
> Fedora 31 was released on October 29, 2019. This is the first major distro that comes with cgroup v2 (aka unified hierarchy) enabled by default, 5 years after it first appeared in Linux kernel 3.16 (Aug 3, 2014).Cgroup v2, в числе прочего, реализует нормальную систему делегирования распределения квот непривилегированным пользователям. Это открывает разработчикам прикладного софта самостоятельно выставлять лимиты своим процессам, например, главный процесс браузера выставляет и динамически регулирует квоты памяти на свои подпроцессы, обслуживающие отдельные вкладки.
В результате, необходимость в third-party механизмах управления ресурсами отпадает.
Костыль на костыле.
Это опенсорс, детка
Кстати о костылях.
1. оверкоммит мемори - это костыль .
2. Эвристический оверкоммит в единице по умолчанию (vm.overcommit_memory=1) - это большой костыль.
3. Ядерный оом киллер, необходимость которого появилась вследствие разрешения оверкоммита - это костыль.
4. Сложный алгоритм, используемый для нахождения жертвы, применяемый ядерным киллером - это костыль.
5. Существование двух параметров для регулирования приоритета выбора жертвы - oom_adj и oom_score_adj - это костыль.
Ладно бы я услышал аргументы о костылях, если бы их не было в ядре, или они хотя бы отлично работали в ядре. Но нет - ядро полно костылей, связанных с обработкой нехватки памяти, и, более того, вся эта груда костылей отвратительно работает. Возможно, юзерспейсные обработчики являются не меньшими и дополнительными костылями, но они хотя бы работают.
в виндах оверкоммит запрещен с рожения и все ок
Федора неадекватна.
rrr@raspberrypi:~$ free -m
total used free shared buffers cached
Mem: 942 895 46 43 14 144
-/+ buffers/cache: 736 205
Swap: 114873 1128 113745У меня свободно 4,88% памяти и это норма. С этим милым поделием мой комп бился бы в конвульсях с 10-й минуты аптайма. А так ничего, полёт нормальный.
>А так ничего, полёт нормальный.Но со стороны он больше похож на падение.
У меня как в "крутом пике", вроде бы падение, но если посмотреть на счётчик, то я уже 10 дней падаю и всё забываю файерфокса перезапустить. Вообще хз на сколько он там с прошлого года растёкся. Сижу себе и строчу комменты от нечего делать.
Я иногда запускаю некоторые жаваподелия, там там 3% "свободной" памяти вполне обычно. И оно будет нормально работать часами и часами, даже своп не используется. А когда памяти не хватает, её не хватает резко много — своп тут же кончается, ядро вытесняет всё лишнее в него и тут же всё зависает. Обычно от проблем с тормозами помогает увеличение свопа до границ, в которых никогда он не кончится, ну и vm.swappiness=95.
Вы ругаетесь на Windows, а у меня 92% памяти свободно, при обычном использовании.Memory
128 GB DDR3
Speed: 1866 MHz
Slots used: 8 of 8
Form factor: DIMM
Hardware reserved: 49.8 MBAvailable 118 GB
Cached 12.7 GB
Committed 13/128 GB
Paged pool 700 MB
Non-paged pool 339 MB
In use (Compressed) 9.8 GB (0 MB)https://cdn1.savepice.ru/uploads/2020/1/6/8814f152e814cf56fa...
Ты ещё всем домой сервера купить предложи.
слабовато товарищ, слабовато. во как у норм пацанов https://imgur.com/a/qPpOpui
> во как у норм пацановЯ не пацан)
P.S. Ну по крайней мере пока не жалуюсь на недостаток производительности;) а если будет не хватать - то увеличу производительность своей рабочей машины :)
И к тому же, не уверена, что у этих "норм пацанов" это стоит у них дома :)
А так да, норм система у них :)
У тебя свободно более 20% памяти.
Битва наконец то проиграна, пойду и себе поставлю окупанта тогда...
А не, в тропическую страну openSUSE ещо не добрался, в репозиториях отсутствует. xD
Ты не прав: https://software.opensuse.org/package/earlyoom?search_term=e...
Частично прав, в офицыальных репозиториях отсутствует, а тут левые юзерские смотрю.
Вот этот пакет похоже профессионально сделан - как надо: https://software.opensuse.org/ymp/home:embar-:Lietukas/openS...
> Вот этот пакет похоже профессионально сделан - как надо: https://software.opensuse.org/ymp/home:embar-:LietukasУгу, скажем так, с надстройками: при любой непонятной ситуацыи шльопать браузеры первыми, как будто это самое наименее важное.
Если 2 Гб то браузер конешно реально может создать проблемы, но на 8+ Гб он лиш фон, а проблемы уже от какой то игрушки, нескольки виртуалок или какой програмы рендеринга.
По этому професиональный пакет при установке сначала смотрел бы на доступный обьём, а уже потом раздавал рекомендацыи какой софт первым шльопать.Но всё равно пасибо, конфиг подправить проблем не составит, а в особенностях openSUSE я токо разбираюся.
Всё теперь официально в экспериментальных: https://bugzilla.suse.com/show_bug.cgi?id=1114589#c12
>FedoraПомерещилось «Firefox»…
неспроста полезные идиоты активизировались в последнее время, постоянный пиар earlyoom в комментах..
Единствонной причиной, по которой его пиарят - это то, что он действительно эффективно может обрабатывать нехватку памяти, в отличие от ядерного киллера. Ядерный киллер не ращищает юзерспейс, он заботится только о себе. Его пиарят не корпорации, а довольные юзеры.
> Ядерный киллер не ращищает юзерспейс, он заботится только о себе.Расчищает, просто делает это в соответствии с oom_score_adj (oom_score deprecated, AFAIK).
Внезапно, определить, убийство какого процесса огорчит end user-а, а какого — нет, весьма непросто.
И никто не хочет ему в этом помогать, указывая корректный oom_score_adj. Наоборот,
> Earlyoom does not use echo f > /proc/sysrq-trigger because the Chrome people made their browser (and all electron-based apps - vscode, skype, discord etc) always be the first (innocent!) victim by setting oom_score_adj very high.#untouchable
А виноват, конечно, OOM killer.
>innocentАххахах, отличная шутка, спасибо тебе безвестный автор! Ох, это лучшая шутка, что я встретил за неделю.
А можно ж просто не выдавать память, если её мало. Зачем килять-то???Ну не дали памяти - пусть ждёт в очереди. Пусть пишут так, чтобы ждал и не падал.
слишком сложно
Чем отличается убиство приложения ООМ киллером и краш приложения встедствие ошибки выделения памяти при запрете оверкоммита?
ошибки выделения памяти можно проверить и не устраивать краш
В OOM-safe стиле пишет только несколько упoротых типа Поттеринга. А 99.99999% программистов считают, что malloc не может вернуть NULL, поэтому обработка OOM в их программах сводится к падению от SIGSEGV.
Ты не прав, стараниями гугла уже много лет как модно обрабатывать левые сигналы. Breakpad тот же. Ну а маллок как минимум может на венде, мы же не вендообезьяны и пишем кроссплатформенно.
можно отстановить выполнение, внезапно(SIGSTOP), и ничего не упадет
>Ну не дали памяти - пусть ждёт в очереди.Это и есть зависание - бесконечное ожидание очереди.
Дожили. Это всё демоны!
Надеюсь в openSUSE из коробки тоже завезут.
Тоже на это ОЧЕНЬ надеюсь! Давно пора!
Уже есть: https://software.opensuse.org/package/earlyoom?search_term=e...
Вот этот пакет вроде корректно сделан - home:embar-:Lietukas: https://software.opensuse.org/ymp/home:embar-:Lietukas/openS...Поставил себе.
> Уже есть: https://software.opensuse.org/package/earlyoom?search_term=e...Для ALL Distributions нет официального пакета
> Вот этот пакет вроде корректно сделан
https://build.opensuse.org/package/view_file/home:embar-:Lie...
%if 0%{?suse_version} >= 1230 || 0%{?rhel} >= 7
%bcond_without systemd
%else
%bcond_with systemd
%endif%if 0%{?rhel} && 0%{?rhel} == 6
%bcond_without upstart
%else
%bcond_with upstart
%endif%if ! 0%{?_fillupdir:1}
%global _fillupdir /var/adm/fillup-templates
%endif%global rpm_version %(rpm -q --qf %%{version} rpm)
Это называется костыль на костылях с ненужным мусором, а не вроде корректно сделан.
Не удивительно, что его в Factory нет и с таким spec-файлом и не будет.
В чём костыль то?! Просто расчитаноо на разные системы - универально сделано. Всё там правильно: сейчас у меня earlyoom запущен и работает нормально, в системных службах присутствует, запускается и останавливается нормально, логи - всё есть.
> В чём костыль то?! Просто расчитаноо на разные системы - универально сделано.
> Всё там правильно: сейчас у меня earlyoom запущен и работает нормально,
> в системных службах присутствует, запускается и останавливается нормально, логи - всё
> есть.Костыль в том что в openSUSE есть только systemd, а версия 12.3, для которой идёт проверка уже давно не существует, а в Factory нет никаких редхетов, только openSUSE.
Release: wiz%{?extraver:0.}1%{?dist}
Release в openSUSE всегда должен быть равен 0, тег Group в openSUSE не нужен.%{__sed}
%{__make} %{?_smp_mflags}Боже мой, у меня глаза на лоб лезут от такого...
Этот мусор просто не нужен! Из-за подобного мусора невозможно нормально не то что сопровождать пакет, а даже провести его аудит.То что он сейчас работает только для x86_64 не факт что он будет работать на других поддерживаемых в openSUSE архитекторах и что он не повлияет на другие пакеты.
На данный момент видно что автор просто залил spec-файл из апстрима, совершенно не понимая как устроена OBS в openSUSE и подерживает его просто для галочки.
Я бы мог сам взяться за его доведения до ума и сопровождение, но считаю что этим должен заняться ментайнер из низкоуровневых подсистем, который разбирается в этом.
Я ниже сетевых приложений не лезу.
А я считаю, что ты бы мог запросто взяться за доведение его до ума раз так хорошо разбираешься в этом, тем более, что там практиченски всё сделано и работает, нужно только отполировать, чтобы в основную ветку могли взять. Сделай пожалуйста, мне мейнтейнеры предлагали, но у меня не так много опыта, я спеки давно не делал, тем более не для себя, а для серьёзного дистра. Они тебе помогут, поправят, если что, когда в основном всё будет сделано. Здесь низкоуровнего ничего нету.
> А я считаю, что ты бы мог запросто взяться за доведение его
> до ума раз так хорошо разбираешься в этомВот только он к тому же человек ответственный и потому совершенно справедливо предполагает о возможности нежелательных эффектов.
> Здесь низкоуровнего
> ничего нету.Если кто не знает о связи подкачки с таблицей страниц, это не значит, что её нет.
>Вот только он к тому же человек ответственный и потому совершенно справедливо предполагает о возможности нежелательных эффектов.Пока ответственности нет: её нужно брать на себя, а иначе это простое балабольство. Как товарищ Сталин говорил: критикуешь - предлагай, предлагаешь - делай, делаешь - отвечай! Вот и вся простая формула!
>>Вот только он к тому же человек ответственный и потому совершенно справедливо предполагает о возможности нежелательных эффектов.
> Пока ответственности нет: её нужно брать на себя, а иначе это простое
> балабольство.Так возьми, не будь балаболом.
> Как товарищ Сталин говорил: критикуешь - предлагай, предлагаешь - делай,
> делаешь - отвечай! Вот и вся простая формула!И что же ты делаешь?
Ну прочитай мои комменты и ссылки внимательно: я не критиковал, для меня меня пакет работает.
Вот, что я предложил и сделал из того, что мог на данный момент: https://bugzilla.suse.com/show_bug.cgi?id=1114589#c7
Разумеется, предварительно я прочёл вот это вот всё. Там ответили: берите ответственность, делайте сами. В результате начались попытки манипуляций "тебе слабо?", когда Илья видит границы своей компетентности и в праве отказаться.
Манипуляций нет, просто зачем пустая критика без действия?
> Манипуляций нет, просто зачем пустая критика без действия?Не можете сами выполнить работу, потому и критикуете Илью в надежде получить от него результат.
Я не критикую, просто предположил, что он сможет раз имеет такие глубокие познания.
> Я не критикую, просто предположил, что он сможет раз имеет такие глубокие
> познания.Он и без нас знает, сможет или нет. С какой целью публиковать так называемое предположение переполненное маркерами "запросто", "раз так хорошо разбираешься" и "нужно"?
Ты сам начал ненужный трёп ;)
Да, именно я виноват, что за тебя не сделали.
Почему за меня?! Все уже сделано - теперь пакет официально в экспериментальных: https://bugzilla.suse.com/show_bug.cgi?id=1114589#c12 ;) И безо всяких изменений!
А, так это я тут просил, что бы добавили, виноват, запамятовал.
https://build.opensuse.org/request/show/761536
Дело сдвинулось с мёртвой точки.После такой чистки, уже можно хоть прочитать его нормально.
Удивительно, что пакет в таком состоянии приняли в Base:System.
Оно не само сдвинулось ;) Люди сдвинули: https://bugzilla.suse.com/show_bug.cgi?id=1114589В официальных уже: https://software.opensuse.org/package/earlyoom?search_term=e...
Сделал это только один конкретный человек Ismail Dönmez ( https://build.opensuse.org/users/namtrac ) я очень рад что он взял проект под своё крыло, и его нет в списке, комментаторов багзилы, в котором люди просто тупо просят принять пакет, причём за год были не в состоянии привести его к нормальному виду.
Посмотри ещё внимательно: этот пакет у него на всех системах работает включая старые:
- openSUSE:Leap:15.0
- openSUSE:Leap:42.2
и т.д. Так что там ВСЁ правильно и корректно.
> Посмотри ещё внимательно: этот пакет у него на всех системах работает включая
> старые:
> - openSUSE:Leap:15.0
> - openSUSE:Leap:42.2
> и т.д. Так что там ВСЁ правильно и корректно.Это мёртвые дистрибутивы, в них он и не должен работать...
Архитектуры это: aarch64 armv7l ppc64le s390x riscv64
earlyoom прекрасно заточен под говно мамонта и может работать на ядрах 2.6. Это самый легаси-френдли киллер.
> Fedora 32Однако... А Fedora 64 будет?
Будет, на ней всё будет в кайф, там, наверное, процессам вообще не нужно будет умирать
Будет, ориентировочно в 2036г
> Fedora 32
> Fedora 64Неловкий момент, когда шутка не удалась Х-)
Да нет, очень даже.
В 2036 — это как раз за два года до 2038 и связанными с ним 32-битными проблемами.
Кстати о костылях.
1. оверкоммит мемори - это костыль .
2. Эвристический оверкоммит в единице по умолчанию (vm.overcommit_memory=1) - это большой костыль.
3. Ядерный оом киллер, необходимость которого появилась вследствие разрешения оверкоммита - это костыль.
4. Сложный алгоритм, используемый для нахождения жертвы, применяемый ядерным киллером - это костыль.
5. Существование двух параметров для регулирования приоритета выбора жертвы - oom_adj и oom_score_adj - это костыль.
Ладно бы я услышал аргументы о костылях, если бы их не было в ядре, или они хотя бы отлично работали в ядре. Но нет - ядро полно костылей, связанных с обработкой нехватки памяти, и, более того, вся эта груда костылей отвратительно работает. Возможно, юзерспейсные обработчики являются не меньшими и дополнительными костылями, но они хотя бы работают.
Предложи как сделать без этих костылей.
Вот и я не знаю как без костылей. Я лишь предлагаю костыль, который, в отличие от ядерных, действтельно работает.
Софт детектирующий в мантейнерах не очень грамотных людей.
Какой софт? Каких мейнтейнеров? Где?
К слову сказать, это движение началось после моего сообщения в LKML. ))Приятно даже. Жаль, что так поздно - о проблеме известно лет 20 минимум.
// b.
Киллеры пишутся уже давно. earlyoom, nohang, oomd были написаны до. Возможно кейс Ташкинова повлиял именно на прогресс в Федоре.
> earlyoom через отправку SIGTERM (свободной памяти меньше 10%) или SIGKILL (< 5%) принудительноТ.е. если у тебя 32 гига оперативки, то 3,2 гига у тебя как будто бы и не существуют, потому что проги начнут умирать. Ничо так, оригинально.
Они будут забиты страничным кэшем. Во-вторых, пороги можно менять.
Сначала сделать проблему, потом героически её решать. Всё как надо.
А почему бы просто не запретить выделение новой памяти, без завершения никаких процессов?
Вместо убйства процессы начнут падать, иногда задолго до исчерпания физической памяти.
Я вообще удивлён как в Линухе до сих пор всё виснет при нехватке памяти. В программах, которые я пишу, по крайней мере в 90% случаев я могу обрабатать OOM и gracefully показать юзеру ошибку.
Серверные программы бывает люди пишут и там прямтебе скажу потребление в 48 - 128 Гб это нормальное дело. А в целом ответ простой хотят подешевле обслужить побольше пользователей. Все эти nginx и прочие почему популярны? Потому что позволяют разным товарищам экономить уйму денег и втихоря строить себе на экономленные деньги дачку ;)
Есть патчи от ChromiumOS для якобы улучшения отзывчивости системы в условиях нехватки памяти: https://abf.io/mikhailnov/kernel-desktop-4.15/blob/master/Ch...
Также есть интересный патч le9: https://abf.io/mikhailnov/kernel-desktop-4.15/blob/master/le...
Я не выявил значительной функциональной разницы с ними и без них, но, может, кому-то будет интересно попробовать. По ссылкам выше есть ссылки на первоисточники.
А почему прибивают процесс, а не замораживают? Заморозка веротяно лучше была бы?
Так если прибить процесс вкладки браузера - браузер ее переоткроет на автомате и заново сожрет память, а если заморозить, то взаимодействующий с ней основной процесс зависнет тоже и у пользователя начнутся фризы и он будет ругаться. :)
> завершит работу процесса, наиболее активно потребляющего памятьСкажем, не влезла у меня компиляция чего-то очень большого в /tmp. Как эта ситуация обработается? Прибивание самого жручего процесса тут не спасет.
Спасет частично. Как вариант ограничивай размер темпа.
В сусе в официальных уже: https://software.opensuse.org/package/earlyoom?search_term=e...
Добрый день!
Есть вопросы, прошу связаться.
С уважением: Трунин Алексей Геннадьевич
89262170357