Бабушка, смотри, я сделал двач! Войти !bnw Сегодня Клубы
У Линуха есть такое неприятное свойство: если какая-то софтина отжирает память, то он начинает терпеливо свопиться и практически перестаёт реагировать на внешние раздражители. Кроме REISUB конечно. Среди любителей пожрать памяти лидирующие позиции, предсказуемо занимают Firefox и Virtualbox. Хотя со многими случается. Я знаю простой способ: `ulimit -v <килобайты>`, который просто не даёт процессу юзать больше памяти и всё. Но как-то мне такой способ не очень. Жёсткое ограничение типа «всем по пять гигов и не больше» — это же фуфло какое-то. Из 1970-х. Из системы MULTICS. Вот как понизить у наглого процесса приоритет по процессору, вводу/выводу и доступу к виртуаьной памяти? Типа вызываешь трешинг свопа или грузишь ЦП — да пожалуйста, но только пока они кому-то нормальному не понадобились. А когда появляется очередь — стой всё время в конце, раз такой жирный. Как?
Рекомендовали: @o01eg @goren
#EPGU5F / @dluciv / 2534 дня назад

подписался на етот тред

#EPGU5F/TF4 / @anonymous / 2534 дня назад
> Типа вызываешь трешинг свопа или грузишь ЦП — да пожалуйста, но только пока они кому-то нормальному не понадобились А как это должно работать? вот предположим у тебя в системе 8 гигов оперативы, свопа нет, Firefox сожрал допустим 6 гигов, и тут ты запускаешь Virtualbox, который хочет допустим 4 гига. Что делать? Килять Firefox?
#EPGU5F/WR2 / @j123123 / 2534 дня назад
@j123123 Не надо килять. Взять самого бессовестного и давать ему, что просит, но в последнюю очередь. Чтобы остальные тоже могли работать.
#EPGU5F/TOP / @dluciv --> #EPGU5F/WR2 / 2534 дня назад
Вот чего нашёл: https://superuser.com/a/1142197
#EPGU5F/2KZ / @dluciv / 2534 дня назад
Никак. Я использую earlyoom чтобы убивать охуевающих ASAP, в итоге своп используется только для вяло текущей хуйни.
#EPGU5F/95V / @l29ah / 2534 дня назад

1) открой для себя cgroups
2) помимо REISUB есть еще F
3) оом-киллер можно тюнить.

#EPGU5F/99L / @lexszero / 2534 дня назад
тред зашкворен, расходимся посаны
#EPGU5F/GDM / @anonymous / 2534 дня назад
@lexszero 1. cgroups — ну тот же ulimit считай 2. да, забыл сказать, и F тоже конечно работает 3. а вот не килять, а то, что я сказал, можно? И бонусом: vm.overcommit_ratio = 100 vm.overcommit_memory = 2 Вот это норм, или не надо так?
#EPGU5F/2MT / @dluciv --> #EPGU5F/99L / 2534 дня назад
@l29ah А вот кстати поставил earlyoom и написал программку, которая делает маллок больше, чем на всю RAM и пишет туда чиселки. Или она earlyoom обогнала, или он что-то не просёк.
#EPGU5F/AV6 / @dluciv --> #EPGU5F/95V / 2534 дня назад
вроде как в 4.10 обещали что пофиксили эту проблему. кто-нибудь проверял?
#EPGU5F/EN4 / @anonymous / 2534 дня назад
@dluciv проблема не связана со свопом, можешь его отключить - не поможет.
#EPGU5F/HNM / @anonymous --> #EPGU5F/2KZ / 2534 дня назад
@anonymous Связана. 99% это трэшинг свопа.
#EPGU5F/Q2B / @dluciv --> #EPGU5F/HNM / 2534 дня назад
@dluciv хуешинг. читай выше.
#EPGU5F/FJG / @anonymous --> #EPGU5F/Q2B / 2534 дня назад
@anonymous $ uname -a Linux ********* 4.14.4-1-ARCH #1 SMP PREEMPT Tue Dec 5 19:10:06 UTC 2017 x86_64 GNU/Linux Увы
#EPGU5F/38U / @dluciv --> #EPGU5F/EN4 / 2534 дня назад
@dluciv Двачую анонима, выключи - увидишь что тоже всё охуевает. Разве что с большей вероятностью oom_killer выстрелит, но не всегда.
#EPGU5F/MLJ / @l29ah --> #EPGU5F/Q2B / 2534 дня назад
@l29ah Окей. Ладно, а может мне пойти унизительным прямым путём и заменить Virtualbox чем-нибудь другим, под чем тоже можно гонять Винду и M$ Office? Да, блин, родной M$ Office, раз делаю, значит надо.
#EPGU5F/0E5 / @dluciv --> #EPGU5F/MLJ / 2534 дня назад
@dluciv >раз делаю, значит надо. nyet
#EPGU5F/YDP / @anonymous --> #EPGU5F/0E5 / 2534 дня назад

Вот было бы у нас всё на автоматическом управлении памятью и один глобальный сборщик мусора на всю систему — можно было бы динамически давить на одни программы и давать волю другим. А пока процесс имеет гигабайты (эксабайты) виртуальной памяти, которые в любой момент может сожрать, и отобрать их без разрешения программы никак нельзя, то остаётся только плакать. Умные программы реагируют на mem_notify, но он, кажется, один на всю систему, и не используется для пропорционального подстёгивания процессов по их лимитам.

#EPGU5F/NJ3 / @ceyt / 2534 дня назад
@ceyt > и отобрать их без разрешения программы никак нельзя Можно канеш. Просто при пейджфолте скедьюлер перестаёт скедьюлить этот процесс и всё.
#EPGU5F/XI1 / @l29ah --> #EPGU5F/NJ3 / 2534 дня назад
@l29ah Угу, например. Ну не при любом конечно, и не при первом. После этого в принципе пары секунд хватит, чтобы остальные просрались и продолжили работать нормально.
#EPGU5F/L3R / @dluciv --> #EPGU5F/XI1 / 2534 дня назад

@l29ah > OOM killer, только труп остаётся в памяти

#EPGU5F/OR8 / @ceyt --> #EPGU5F/XI1 / 2534 дня назад
@ceyt Труп в свопе остаётся в итоге, не? Ну тоже не ок конечно.
#EPGU5F/M8B / @dluciv --> #EPGU5F/OR8 / 2534 дня назад

@dluciv В линуксе уже есть анекдот под таким-то номером, когда всё «на пару секунд» в принципе просирается и продолжает работать нормально.

#EPGU5F/EOB / @ceyt --> #EPGU5F/L3R / 2534 дня назад

@dluciv Чтобы он на диске оказался, его туда нужно записать. А потом обратно.

#EPGU5F/6JK / @ceyt --> #EPGU5F/M8B / 2534 дня назад
@ceyt Я лично только по опыту знаю, что он остаётся. Честно говоря, не в курсе, почему его не кремируют вообще. Что мешает-то?
#EPGU5F/XDN / @dluciv --> #EPGU5F/6JK / 2534 дня назад
@ceyt До хрена грустный анекдот на самом деле.
#EPGU5F/SHL / @dluciv --> #EPGU5F/EOB / 2534 дня назад
@ceyt Пук.
#EPGU5F/XXK / @l29ah --> #EPGU5F/OR8 / 2534 дня назад

@dluciv Что за F?

#EPGU5F/OHH / @cat-o-nine-tails --> #EPGU5F/2MT / 2533 дня назад
@cat-o-nine-tails Alt + SysRq + F
#EPGU5F/QIC / @dluciv --> #EPGU5F/OHH / 2533 дня назад
@l29ah А я вот что-то не двачую пока. Прицепил [вот эту херню](https://github.com/Nefelim4ag/systemd-swap) — она мне ожидаемо убавила памяти прибавила свопа. Так вот с ней тоже так себе, но гораздо легче. Алсо по SysRq + F угадайте, кого спускают в сортир? Не, не VirtualBox и даже не Firefox. А одну вкладку в Rambox, в которой запущен Riot.im (клиент Matrix). Вот кто у нас оказывается слабое звено.
#EPGU5F/UUC / @dluciv --> #EPGU5F/MLJ / 2533 дня назад
@l29ah По-моему вот [штука](https://github.com/tobixen/thrash-protect) примерно на эту тему, попробую её.
#EPGU5F/D6X / @dluciv --> #EPGU5F/XI1 / 2533 дня назад
@dluciv Чёт ни фига от неё пользы не ощущается...
#EPGU5F/81U / @dluciv --> #EPGU5F/D6X / 2533 дня назад

@dluciv чем в итоге всё кончилось? разрулил проблему? расскажи потом обязательно плз

#EPGU5F/BQV / @anonymous --> #EPGU5F/81U / 2531 день назад
@anonymous Да не, считай не разрулил. Прикрутил ZRAM (ну или чего там у systemd, запустил и забыл уже), вспомнил, как нажимать SysRq + F, научился завершать Rambox перед запуском VirtualBox. Субъективное ощущение, что проблема в Линухе не решена вообще никак, осталось, таким же, как раньше. Собственно пока `ld` на `gold` не заменил, такое же случалось, когда собиралось что-то жирное. `ld` вешал систему только так.
#EPGU5F/S1J / @dluciv --> #EPGU5F/BQV / 2531 день назад

@dluciv напомни что делает sysrq+f и как правильно нажимать если у меня синкпад: fn+prtsc+shift+f?

#EPGU5F/U0Z / @anonymous --> #EPGU5F/S1J / 2531 день назад
@anonymous Не, шифт не надо. `Alt + Fn + PrintScreen + f`
#EPGU5F/6NB / @dluciv --> #EPGU5F/U0Z / 2531 день назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.