LINUX.ORG.RU

oom-killer зачем-то убивает Огнелиса по утрам

 , ,


0

1

С некоторых пор началось что-то непонятное. Сажусь утром за компьютер - а Firefox закрыт. Хотя у меня он запущен постоянно. Из системного журнала выяснилось, что по утрам за ним приходит oom-killer.

Но я не понимаю, почему. Свободной оперативки предостаточно, а Firefox не показывает никаких признаков утечки. Например, вчера ночью, перед тем как лечь спать, я специально посмотрел: было занято 5 с лишним ГБ оперативки из 16-ти. А утром Огнелиса убил oom-killer. Мог ли Firefox за ночь сожрать >10 ГБ оперативки, будучи в простое? Если даже в активной работе он так не сжирает память.

При этом у меня параллельно запущен Brave, в котором постоянно играет ютуб-радио (на ночь я просто выключаю колонки) - и за ним oom-killer не приходит! А бедную Лисичку зачем-то убивает.

И каждый раз в журнале одно и то же: https://ghostbin.org/raw/6562e40bf418d

Ответ на: комментарий от anonymous

А работа только в ram это хорошая идея для андроидофона и вероятно некоторых ссерверов, но совершенно ненужный и даже вредный для десктопов, ноутов и подобного. Здесь лучше не жопиться и выделить небольшой файлик на диске. А ещё лучше - большой раздел на ssd.

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

Запустил на ночь скрипт @firkax. Сегодня oom-killer за Огнелисом не приходил, но в логе скрипта есть интересный момент.

Стартует скрипт с таких записей:

Пн 27 ноя 2023 00:34:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     4662132     5030516      262492     7269860    11701200
Swap:              0           0           0
Пн 27 ноя 2023 00:35:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     4859488     4780716      276512     7336324    11503844
Swap:              0           0           0
Пн 27 ноя 2023 00:36:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     4877032     4762308      267788     7328464    11486300
Swap:              0           0           0
Пн 27 ноя 2023 00:37:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     4924976     4710976      259432     7323496    11438356
Swap:              0           0           0
Пн 27 ноя 2023 00:38:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     4852844     4782576      259432     7324028    11510488
Swap:              0           0           0
Пн 27 ноя 2023 00:39:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     4912324     4714320      259432     7332804    11451008
Swap:              0           0           0
Пн 27 ноя 2023 00:40:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     4906960     4719376      249184     7322864    11456372
Swap:              0           0           0
Пн 27 ноя 2023 00:41:27 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5003520     4605396      251232     7342332    11359812
Swap:              0           0           0

А утром приходит к таким:

Пн 27 ноя 2023 09:37:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15014488      273720      245352     1661256     1348844
Swap:              0           0           0
Пн 27 ноя 2023 09:38:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15104784      195308      245580     1649600     1258548
Swap:              0           0           0
Пн 27 ноя 2023 09:39:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15031940      249144      245580     1668608     1331392
Swap:              0           0           0
Пн 27 ноя 2023 09:40:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15087428      192968      245580     1669316     1275904
Swap:              0           0           0
Пн 27 ноя 2023 09:41:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15179372      200088      245580     1566136     1183960
Swap:              0           0           0
Пн 27 ноя 2023 09:42:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15112576      266544      245580     1566476     1250756
Swap:              0           0           0
Пн 27 ноя 2023 09:43:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15141500      237412      245352     1566456     1221832
Swap:              0           0           0
Пн 27 ноя 2023 09:44:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15219024      251828      245580     1474744     1144308
Swap:              0           0           0
Пн 27 ноя 2023 09:45:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15158556      311980      245580     1475060     1204776
Swap:              0           0           0
Пн 27 ноя 2023 09:46:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15215316      254888      245580     1475392     1148016
Swap:              0           0           0
Пн 27 ноя 2023 09:47:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15287164      184860      245580     1473572     1076168
Swap:              0           0           0
Пн 27 ноя 2023 09:48:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15213784      319580      245580     1412232     1149548
Swap:              0           0           0
Пн 27 ноя 2023 09:49:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15255320      277324      245580     1412952     1108012
Swap:              0           0           0
Пн 27 ноя 2023 09:50:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15334084      184552      245580     1426960     1029248
Swap:              0           0           0
Пн 27 ноя 2023 09:51:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15300304      321436      245580     1323860     1063028
Swap:              0           0           0
Пн 27 ноя 2023 09:52:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332    15331948      289240      245580     1324408     1031384
Swap:              0           0           0

И вдруг резко:

Пн 27 ноя 2023 09:53:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5120940    10498328      245580     1326328    11242392
Swap:              0           0           0
Пн 27 ноя 2023 09:54:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5212608    10406132      245580     1326856    11150724
Swap:              0           0           0
Пн 27 ноя 2023 09:55:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5165064    10452276      245580     1328256    11198268
Swap:              0           0           0
Пн 27 ноя 2023 09:56:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5191536    10425576      245580     1328484    11171796
Swap:              0           0           0
Пн 27 ноя 2023 09:57:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5149852    10466516      245580     1329228    11213480
Swap:              0           0           0
Пн 27 ноя 2023 09:58:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5182612    10432588      245580     1330396    11180720
Swap:              0           0           0
Пн 27 ноя 2023 09:59:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5259792    10348476      245580     1337328    11103540
Swap:              0           0           0
Пн 27 ноя 2023 10:00:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5230392    10377620      245580     1337584    11132940
Swap:              0           0           0
Пн 27 ноя 2023 10:01:32 +06
               total        used        free      shared  buff/cache   available
Mem:        16363332     5221848    10384080      245580     1339668    11141484
Swap:              0           0           0

Что это за нафиг может быть?

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

Ну, надо убедиться что это действительно Firefox. А то вдруг там что-то внезапное)

А так-то да, неплохо бы ещё внутрь Огнелиса как-то залезть, чтобы логи потребления ресурсов получить. Только хз как это сделать.

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

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

anonymous
()
Ответ на: комментарий от papin-aziat

Умные люди говорят, что своп – это не про мало оперативки

И они абсолютно правы. Ты можешь без проблем в этом убедится – запусти компиляцию, к примеру, ядра в 4-6 потоков (в таком режиме компилятор не потребует больше 4 гигов) и открой htop; ты увидишь, как наполняется swap, даже если физической памяти еще много

hateWin ★☆
()
Ответ на: комментарий от papin-aziat

swappiness поставил 100

Это не про активность юзания свапа. Параметр swappiness определяет соотношение цены сброса на диск страниц, ассоциированных с файлами, и цены выгрузки анонимных страниц в свап. Значения меньше 100 указывают, что выгрузка анонимных страниц дороже; значения больше 100 означают, что дешевле выгружать анонимные страницы в swap; при swappiness=100 цена анонимных страниц и файлового кеша примерно одинакова

hateWin ★☆
()
Ответ на: комментарий от papin-aziat

На современном линуксовом десктопе как правило есть zram или zswap. Значение 200 будет оптимально, поскольку уменьшит количество сброшенных файловых страниц до минимума, позволив избежать пробуксовки (trashing). Если у тебя старый жесткий диск и по каким-то причинам нет zram/zswap, значение swappiness должно быть меньше 100. Но я не представляю, где такой сценарий вообще может встретится. Если персональный компьютер без ssd я еще могу себе представить, то компьютер без возможности включить zram/zswap – нет

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

Значение 200 будет оптимально, поскольку уменьшит количество сброшенных файловых страниц до минимума, позволив избежать пробуксовки (trashing).

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

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

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

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

заниматься непрерывным считыванием

Давно уже нет. Со времен выхода ядра 6.1 и прикрученном к нему mglru.

Я поэтому везде и всюда пишу ЛОРовцам, смотрите, чтобы в дистрах были ядра ≥ 6.1, если нет, ставьте сами. А мне чаще в ответ, «да нам и 5.15 нормально». :)

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

Если какая-нибудь зараза выжрет всю память

Чёт фантастический сценарий для меня, на такое только компиляция способна, и в этом случае я все равно комп не юзаю, проц-то тоже шпарит на все 100.

papin-aziat ★★★★★
()
Ответ на: комментарий от krasnh

Давно уже нет. Со времен выхода ядра 6.1 и прикрученном к нему mglru

Да. mglru гораздо адекватнее учитывает стоимость сброса файловых страниц на диск и система не встанет колом. Но с большим значением swappiness все равно будет комфортней

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

с большим значением swappines

С этим никто не спорит, у меня у самого 180. Столько же советует арчвики. Можно и на ЛОРе найти советы от 150 до 200.

Уточню, речь о zram/zswap.

krasnh ★★★★
()
Последнее исправление: krasnh (всего исправлений: 2)
Ответ на: комментарий от Bad_ptr

Идея — написать расширение(или внести патч) для браузера — «ООМ-киллер для вкладок».

Отличная идея, кстати. Надо, чтобы оно при этом настраивалось, конечно. Например, чтобы любую вкладку, отожравшую больше N МиБ киляло в любом случае, при этом, если все вместе отжирают M ГиБ, киляло самую жручую, плюс «белый список» url’ей (с регэкспами), которые важны, и вкладки с которыми килять надо в последнюю очередь.

Главное, чтобы расширение это написали не как обычно криворучки, а то будет типичная ситуация, когда хотели как лучше, а получилось как всегда, и само расширение при долгой работе браузера без перезапусков начинает течь :D

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

Более удобная формула для рассчёта: swappiness = 200 * x / (x+1), где x - значение, во сколько раз скорость своп-девайса больше скорости файловой системы.

https://docs.kernel.org/admin-guide/sysctl/vm.html#swappiness

Побенчить zstd (один поток): zstd -b3

В ядре, насколько я понимаю, уровень сжатия по умолчанию для zstd не настраивается и всегда равен 3. Можно вручную переопределить дефайн ZSTD_CLEVEL_DEFAULT, чтобы сделать более скоростной уровень сжатия.

anonymous
()

atop показал, что это действительно течёт Firefox, но картина какая-то странная

Вот начало ночи, Firefox в рамках приличий: https://i.postimg.cc/6tbDXJ02/ff-leak1.png

А вот 10:28 утра, Фаерфоксу явно плохо: https://i.postimg.cc/ZZK7Ks0r/ff-leak2.png

Но что самое странное - в 10:36 Firefox уже резко схуднувший: https://i.postimg.cc/Z4Ww698n/ff-leak3.png

При этом oom-killer сегодня тоже не отрабатывал, Firefox остался работающим.

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

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

Что это за хрень может быть? Если программа течёт,

Не забывайте, что браузер - не просто программа, а надстройка над тем, что вы сами грузите и запускаете из инета. Поэтому для начала:

  • пересмотрите наличие установленных плагинов, тем и так далее.
  • отконфигурируйте в фф-шном конфиге все что касается памяти и кэширования
  • пользуйте about:memory

https://firefox-source-docs.mozilla.org/performance/memory/about_colon_memory.html

Можете сделать отдельный контрольный профиль ФФ, запустить в нем свою сессию about:memory и сравнивать поведение вкладок групп вкладок. Не забывайте, что работа ФФ с памятью (то, как он ее видит) и работа ОС с памятью - это две разные сущности, которые могут сильно отличаться.

Если лень экспериментировать и копаться - можно применять что-нибудь подобное:

https://lotositsh.github.io/it/firefox-memory-leak.html

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

Как бы теперь определить конкретный источник утечки внутри браузера

Неужели, ‘вековая’ проблема firefox будет наконец-то выявлена, вытащена на свет и пригвождена к позорному столбу?

Бойтесь, хромоподобные браузеры, наступают последние дни вашей популярности!111 😀

krasnh ★★★★
()
Ответ на: комментарий от papin-aziat

Когда я гонял тесты - получилось что zswap/zram это не столько про ускорени, сколько про снижение i/o для ssd. Ну, если он достаточно быстрый и не знанят чем то другим.

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

Ядро 6.1 на некотором железе даёт косяки. Тут пока что надо аккуратно.

Да, и ещё надо посмотреть что там со старым железом, особенно видеокартами. В последнее время нарисовался тренд по выпиливанию железа и появлению косяков поддержки.

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

А в файерфоксе уже есть, без всяких расширений. Он просто берёт и сбрасывает старые вкладки. Управляется плохо, результат такой что проще отключить и позволить ему свопиться до жопы.

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

Как бы теперь определить конкретный источник утечки внутри браузера

$ mkdir ff_track         
$ cd ff_track
$ curl -s https://0x0.st/HxPd.sh > ff_track.sh 
$ chmod +x ff_track.sh 

$ ./ff_track.sh -h
Process memory consumption tracker

Usage:
    rm ff.db
    ./ff_track.sh
    ./ff_track.sh [ff.db]

$ ./ff_track.sh   
File /tmp/ff_track/ff.db has been created.
Tracking 'firefox' memory usage (^C to stop)...
^C
Run "./ff_track.sh" again to plot collected data with Gnuplot.

$ ./ff_track.sh  # показывает график

Пример графика.

На интерактивном графике, тыкая в легенду, можно скрывать линии. Как определишь PID злосчастного процесса, заходи на about:processes и смотри, что за вкладка или процесс съедают память.

Зависимости: SQLite, Gnuplot.

По умолчанию ps вызывается каждые 60 секунд. ff.db много места не занимает. У меня за 10 часов он получился всего 300 кБ.

anonymous
()