LINUX.ORG.RU

Когда линь перестанет виснуть при исчерпании памяти? (2022)

 , ,


7

6

Сколько я пользуюсь компами с виндой и линем, столько испытываю эти проблемы. Некая десктопная софтина жрет оперативу. потом еще немного жрет, и еще немного, и потом внезапно система висит, бешенно читая SSD накопитель. OOM не срабатывает, потому что память в медленном сценарии не исчерпана. Хуже всего то, что при отсутствии свопа данный сценарий наступает очень резко, лавиннобразно, система работает как ни в чем ни бывало, а потом за несколько секунд замирает.

Прописал vm.vfs_cache_pressure = 20 в /etc/sysctl.conf — ничего не поменялось. Systemd до недавних пор в этом плане тоже была поломатое, вроде в бунте 21.10 пофиксили, но у меня деб 11: https://github.com/systemd/systemd/issues/10581

★★★★

Покупай больше, ещё больше оперативы. Проблему с памятью в Linux не могут решить ни команды дистрибутивов, ни пользователи этого сайта. Я себе поставил 256 GB, пока, как правило, хватает.

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

Я себе поставил 256 GB, пока, как правило, хватает

LOL. Учитывая тенденции софтостроения, я боюсь, мне тоже придется 256 ставить. Но это абсурд, потому что реально мне столько не нужно.

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

Ну ты просто немножко оттянул момент окончания памяти, пытаясь пожать ей. Рано или поздно, память закончится даже с учётом zram и ты влетишь в ту же самую ошибку.

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

А вот прикинь, не кончается. Я хз как. Когда заполняется процентов этак 85-90, начиаются весьма сильные тормоза - 12309, но не зависает никогда окончательно.

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

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

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

naKovoNapalBaran
()

Отхожу от лэптопа с 4-мя ГБ оперативки и запущенным браузером с множеством вкладок (но с заблокированным показом видео на страничках). Прихожу - а там гул вентилятора, и нет реакции даже на NumLock. Ну, есть, если подождать с минуту. Но иногда бывает, возвращаюсь - браузер убит. В итоге разрешил в Debian вызов OOM по alt+sysrq+f - больше не надо терять рабочую сессию. Не ожидал, чтобы стандартные настройки (да и соответствующая архитектура) были настолько абсурдны.

Попытки исправить ситуацию в mainline от @hakavlad: Убунтята, не проходите мимо: le9 patch добавлен в linux-xanmod и ваш OOM killer будет вылечен.

Гугл продвигает: Тестируем Linux 5.12—5.17 с патчем Multigenerational LRU Framework.

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

В итоге разрешил в Debian вызов OOM по alt+sysrq+f - больше не надо терять рабочую сессию

Ты мой Бох. Я не знал, что такие кнопалки в лине есть. Систему я ребутал через SysRq, но oom-killer здесь самое оно.

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

Тру красноглазое решение - выпиливание всего жирного софта и юзать консольные приложения. :-)

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

Можно решить легче: написать скриптик, который при достижении 95% заполненнности ОЗУ будет отрубать самую жрущую программу.

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

У меня на 8гб на ноуте со встроенной видяхой по 4 клиента вовки можно, плюс браузер. Тормозить будет, но не зависнет. А можно несколько сотен вкладок в браузере. Недавно было 812…

Zram творит чудеса.

И если ты отходишь и за время отсутствия зависает, глянь что у тебя течет. Это ненормально.

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

Ты только что изобрел oom-killer

Неа, earlyoom. По итогу я его себе и поставил. Oom-killer по моим ощущениям вообще ничего не убивает. ХЗ из-за чего так и в какой момент разрабы линя пролюбили идею в фундаменте.

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

У меня на 8гб на ноуте со встроенной видяхой по 4 клиента вовки можно, плюс браузер. Тормозить будет, но не зависнет. А можно несколько сотен вкладок в браузере. Недавно было 812

Тормоза недопустимы. Если система не может втиснуться в тот объем оперативы, который я ей указал (не важно, со свопом или без), то она должна грохать приложухи. Даже винда так делает, хотя формально там нет oom-убийц.

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

Когда ты включишь физический своп. В особо тяжёлых случаях ещё надо включить zswap и не мешать ему работать и отсечь systemd от управления памятью через cgrops.

А вообще можешь обрисовать задачу в которой ты смог подвеситься?

kirill_rrr ★★★★★
()
Последнее исправление: kirill_rrr (всего исправлений: 2)

Я считаю, что на этот вопрос может ответить только толстенная книга с названием «как настраивать работу с памятью в Linux». Объём материала, который надо знать слишком большой, чтобы его можно было изложить на форуме.

https://docs.kernel.org/admin-guide/mm/index.html (и это только про ядро. А ещё ведь есть пользовательский софт.)

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

а чего там у тебя с памятью? у меня 2 гига - хватает, swap на всякий случай конечно есть, но он никогда не используется.

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

на что сейчас может хватать 2гб озу

на все если не крутить винду в виртуалке

клиент вовки

не понимаю что это такое

amd_amd ★★★★★
()

vm.vfs_cache_pressure = 20

И не должно было. Так может стать только хуже. cast post-factum. Чтобы стало лучше, надо отрубить к чертям дисковый свап, включить zram, увеличить swappiness и включить юзерспейсный киллер. ТОгда система ведет себя лучше. Если не лень, можно поиграться с патчем от hakavlad

hateWin ★☆
()

Через cgroups блокируешь софту от своего пользователя есть более 95% всей оперативной памяти ОС. Всё, ОС никогда не зависнет. Правда ПО будет падать, но ОС нет.

Vsevolod-linuxoid ★★★★★
()

Когда уберут overcommit и научатся писать приложения, обрабатывающие нехватку памяти.

В том же Windows overcommit в целом не применяется.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от Shushundr

на этот вопрос может ответить только толстенная книга с названием «как настраивать работу с памятью в Linux»

Там еще должна была быть первая глава под названием «за каким хером мы сделали дефолт принципиально неработоспособным и не чешемся».

thesis ★★★★★
()
Ответ на: комментарий от naKovoNapalBaran
mkdir /sys/fs/cgroup/softina/
echo 6G > /sys/fs/cgroup/softina/memory.high
echo $$ > /sys/fs/cgroup/softina/cgroup.procs
./softina

+1. Создаёшь контролгруппу, назначаешь ей лимит по памяти и добавляешь в неё нужный софт.

skyman ★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Не обязательно. Достаточно разобраться с swapiness, zram и earlyoom. Я гарантирую это.

hateWin ★☆
()

zRAM с подобным мусором не справляется?

One ★★★★★
()

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

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

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

8 гб оперативы. Было запущено куча барахла, 2 гб свопа или около того. Всё норм пахало. Manjaro KDE, Linux 5.10.102

OpenMind ★★★★
()

Когда линь перестанет виснуть при исчерпании памяти? (2022)

Когда это понадобится бизнесу. Пока что всем хватает велосипедов и недорешений.

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

у меня 2 гига - хватает, swap на всякий случай конечно есть, но он никогда не используется.

+1, на расбери3 с 1гб всего один раз попал на зависания, потенциально по причине упирания в озу (но и то не факт). Притом Висла даже не ось а отдельный Ява процесс (вм)

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

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

amd_amd ★★★★★
()

Используй solaris, например...

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

Чтобы корова давала больше молока, её надо лучше кормить. (Вариант с меньше кормить и больше доить неработоспособен)

А Linux чтобы лучше работал - память вставлять.

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

Когда линь перестанет виснуть при исчерпании памяти?

Хуже всего то, что при отсутствии свопа данный сценарий наступает очень резко, лавиннобразно

Правильно заданный вопрос – половина ответа. Использовать swap на реальном накопителе.

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

Обычно без overcommit. Если кончилась память, то malloc вернёт NULL. OOM killer отсутствует

Да, так делает и винда. Я считаю оптимистичное выделение памяти никсами фундаментально провальным. Причем, с этим ничего не сделать, потому что есть fork, который делает copy-on-write и под него нельзя резервировать память.

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

Причем, с этим ничего не сделать, потому что есть fork, который делает copy-on-write и под него нельзя резервировать память.

Есть posix_spawn, который создаёт процесс с нуля.

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

Есть posix_spawn, который создаёт процесс с нуля

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

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