LINUX.ORG.RU

Похоже я нащупал как обуздать Firefox и скармливать ему чуть-чуть памяти

 , , ,


6

4

Фокс конкретно достал своим прожорством. Шестнадцать гигов, а я постоянно вижу как всё свапится из-за этого гада. (и не гыкайте мне тут, все браузеры ведут себя одинаково) Ладно бы я что-то сложное делал. Но он явно не отпускает страницы из памяти, хотя уже и выставил кучу всяких уловок. Но вот что мне не давало покоя - этот гад видит сколько в компе памяти и не собирается останавливаться пока не выжрет всё. В результате все программы должны по стеночкам обходить. А тут вы со своими спорами про systemd. И придумал я гадкое, засунул фокса в персональную группу с ограничениями. Сделал так: Создал директорию ~/.config/systemd/user/app-firefox@.service.d/ В ней файл override.conf со следующим содержимым

[Service]
MemoryHigh=1.5G
MemoryMax=4G
MemorySwapMax=0

Перезапустил всё и стало хорошо на душе, фокс стоит на полтора гигах, как вкопанный. Но только включил ютуб, переключился на другое окно с другой вкладкой в другом фоксовском контейнере и всё дико тормозить стало. Я поднял до 2.5G, стало полегче, но всё равно, дойдёт до черты и тормоза лютые сразу. И тут я понял, что он смотрит куда-то в meminfo насчёт доступного рама, но не видит ограничений системды. И поэтому сходу влетает в ограничение, полагая, что все 16 гигов его. Тогда я создал фейковый ~/.fake_meminfo в домашней папке где заменил MemTotal: 4194304 kB и произошло чудо. Всё стало вполне сносно. Но вдруг внезапно он стал падать после нескольких видео на ютубе. Видимо недостаточно я ему наврал. Тога я попросил у ИИ сгенерить meminfo чтобы было похоже, что мы подходим к границе доступной памяти. Вот такой файл ~/.fake_meminfo в итогу получился

MemTotal:        4194304 kB
MemFree:          350000 kB
MemAvailable:     512000 kB
Buffers:           50000 kB
Cached:           600000 kB
SwapCached:            0 kB
Active:          2500000 kB
Inactive:         800000 kB
Active(anon):    2000000 kB
Inactive(anon):     4000 kB
Active(file):     500000 kB
Inactive(file):   800000 kB
SwapTotal:      15580020 kB
SwapFree:       15580020 kB
Dirty:              1000 kB
Writeback:             0 kB
AnonPages:       2000000 kB
Mapped:           400000 kB
Shmem:            150000 kB
Slab:             300000 kB
CommitLimit:    22656768 kB
Committed_AS:   15171448 kB
DirectMap4k:      800000 kB
DirectMap2M:     3000000 kB

а файл override.conf стал таким

[Service]
MemoryHigh=2.5G
MemoryMax=4G
MemorySwapMax=0

# "Обман" - подмена файла для Firefox
BindReadOnlyPaths=/home/pchelobiaka/.fake_meminfo:/proc/meminfo

И… иии… вроде работает. Полноценный Фокс с контейнерами, по собственной воле держит около 2 гигов и не больше.

Спешу поделиться наблюдением. Пробуйте кому интересно. И может что дельное подскажете.

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

Upd.: Важное дополнение. При рассчёте занимаемой памяти я беру не просто размер процесса firefox, но суммы всех процессов фокса вместе взятых. Как оказалось люди не поняли сразу и пфыкают :)



Последнее исправление: PcheloBiaka (всего исправлений: 4)
Ответ на: комментарий от PcheloBiaka

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

Я и собрал.

Я даже проще поступил. Закрыл Firefox, без него занято 2.2 гига. С ним — 4.8 сейчас. 2.6 отъел он. Сейчас больше, чем было, да — я видео на ютубе смотрю, выведя на второй экран его.

В среднем 2–3, короче, при нормальном использовании. Иногда 4–5, если много всякого понаоткрывать. Особенно вкладки ютуба много отжирают, да. Поэтому даже если я их открою штук 5–10 (как очередь, да), я их тупо выгружаю (Unload). Смысла их загруженными держать нет никакого — если ютуб удалит видео, оно всё равно не проиграется, даже если вкладка загружена — так что даже в этом плане смысла ноль.

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

А так-то, если не иметь привычки закрывать вкладки, то через через неделю использования firefox при открытии и загрузке всех вкладок потребляет и 15 и 20Гб

А зачем загружать все вкладки при загрузке? Все 100500 должны загружаться выгруженными, а загружаться в память после перехода на них. Плюс после сколько-то часов неактивности, тоже должны выгружаться. Тогда одновременно в памяти будут только используемые, даже если в табах их 500 штук пол года уже лежит.

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

Нет никакого смысла держать открытыми вкладки дольше длительности рабочей смены.

У меня группа вкладок с названием Стройка. Я там держу ссылки на страницы со стройматериалами до покупки которых может дойти только через год. А если я их перенесу в закладки, я тупо про них забуду(уже проверено неоднократно) и буду искать через пол года заново.

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

Просто, ну можно не забывать.

- Вы бедный и больной? 
- А ну немедленно прекратите!

Ну и я не жалуюсь. У меня в яндексобраузере на 150 вкладок в 10 группах занято в памяти 3Гб на данный момент(смотрю в btop, там можно свернуть дерево и получить общее потребление порожденных процессов). Меня это полностью устраивает.

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

Ну, если яндекс браузер устраивает как браузер, то я к этому не могу ничего добавить больше. Тогда понятно.

А вы им пользовались вообще? Возможно удобнее будет только Vivaldi, но в нём нет одной важной для меня фичи, поэтому не перехожу.

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

Это же биопроблемы, они на стороне кукухи, а не на строне компа. Просто, ну можно не забывать. Это вообще не проблема.

У тебя последнее предложение противоречит первому. Да, это может быть проблемой со стороны «головы» юзера. Но если это так, то это не «вообще не проблема», а как раз таки вполне себе проблема. Если она мешает, конечно. При этом её можно осознавать, можно не осознавать. Можно пытаться решить, можно смириться, можно не просто смириться, а убедить себя, что проблемы нет, и с остальными что-то не так. Можно не решать, но смягчать тем или иным способом — делая жизнь удобнее с учётом этой проблемы. По-разному можно.

Но «это биопроблемы» и «это не проблема» одно с другим не бьётся.

Насчёт того, что «можно не забывать»… Легко сказать, но не каждому легко сделать. Я вот не забываю, но я могу понять тех, у кого такая проблема есть. Это как сказать человеку с режимом сна «сова»: «можно же вставать в 5 утра», или человеку с депрессией: «можно же не грустить», или даже человеку с какими-нибудь проблемами с дыхалкой: «можно же нормально дышать». Можно-то можно. Но у кого есть проблемы, для тех это может быть трудной, а иногда и непосильной задачей. Как в случае паталогии, так и в случае просто тех или иных особенностей психики или характера человека.

Извиняюсь за духоту, просто хотелось донести мысль.

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

Если приложение течёт (я так понял, у ТС такая проблема

Мне кажется, что ТС делает из мухи слона, что решает проблему, которой, по большому счёту не существует, и что ему просто не нравится факт, что приложение потребляет «много ОЗУ». Я думаю, очевидно, что:

  • на отрисовку каждой открытой вкладки требуется некоторое количество ОЗУ
  • при закрытии вкладки браузер может не освобождать мгновенно всю память, которая требовалась на её отрисовку.

Но чтобы это вызывало существенные проблемы с другими приложениями - я не верю. Я верю, что когда свободная память начнёт заканчиваться (или раньше) - браузер самостоятельно проведёт сбор мусора и прочие оптимизации. В ветке вроде бы никто (да даже и сам ТС) не подтвердил наличие каких-либо неудобств, связанных с тем, что браузер «жрёт память когда не должен».

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

Может быть всякое, но я исхожу обычно всё же из добросовестности собеседника — если он говорит, что у него FF не возвращает память после закрытия вкладки, а также что он у него аж по 16 ГБ выжирал, и при этом у меня нет совсем никаких оснований полагать, что обманывать в этом ему в чём-то выгодно, я склонен предполагать, что он не врёт.

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

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

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

Смысл поста не в том, что «можно не делать», а в том, что можно рационально организовать работу и мышление, просто остановившись на 5 минут и задумавшись, а что же за дичь мы творим. И тогда, проблема исчезнет, потому что невозможно забыть что 2+2=4.

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

Еще добавлю такой важный аспект. Из-за того что никто не задумывается ни о чем, а все творят просто дичь, например виндузятники устраивают свалку на рабочем столе, хранят контракты в корзине, а продвинутые виндузятники хранят кандидатскую в папке Загрузки - страдают нормальные люди, потому что разработчики всех этих систем, начинают подстраиваться под дичь-workflow и класть болт на нормальный workflow. В десктопных ОС, работу с ФС сажают на мощный поисковик, потому что вантузятники и поколение ведроида не осиливает понятие «папка». Примеров сколько угодно, буквально сегодня у меня студенты не могли понять, как в программе отрыть файл от этой программы, при помощи диалога «открыть файл». Они не понимали, что надо зайти в папку где лежит этот файл и кликнуть по нему. Все это на Windows. Вот так мы живем.

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

Методологически, уж лучше бы у нас был до сих пор IE6 без вкладок.

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

Еще добавлю такой важный аспект. Из-за того что никто не задумывается ни о чем, а все творят просто дичь, например виндузятники устраивают свалку на рабочем столе, хранят контракты в корзине, а продвинутые виндузятники хранят кандидатскую в папке Загрузки - страдают нормальные люди, потому что разработчики всех этих систем, начинают подстраиваться под дичь-workflow и класть болт на нормальный workflow. В десктопных ОС, работу с ФС сажают на мощный поисковик, потому что вантузятники и поколение ведроида не осиливает понятие «папка». Примеров сколько угодно, буквально сегодня у меня студенты не могли понять, как в программе отрыть файл от этой программы, при помощи диалога «открыть файл». Они не понимали, что надо зайти в папку где лежит этот файл и кликнуть по нему. Все это на Windows. Вот так мы живем.

Да уж… Жуть.

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

Здесь не могу согласиться. Группы вкладок могут быть полезны и без бардака. Например, человек может работать над проектом и держать открытой пяток вкладок с документацией. При этом он параллельно может выбирать жене шубу и иметь для этого открытыми ещё полдюжины вкладок. И отдельно ещё, скажем, вкладку с ютубом каким. Это всё может происходить именно одновременно — не вместо закладок, а такая вот многозадачность. И в таких случаях группы вкладок вполне себе помогают создать порядок, а не бардак. Использование вкладок вместо закладок, висящих по полгода, я тоже не понимаю, но группы вкладок не только для этого используются.

Методологически, уж лучше бы у нас был до сих пор IE6 без вкладок.

Когда ещё вебкит (первый) был актуален в плане поддержки фич и прочего, я юзал uzbl — без вкладок, с окнами вместо них. Это очень удобно на самом деле, и я всеми руками за отказ от вкладок внутри программы, потому что вкладками может очень удобно рулить WM/композитор. Одинаково для терминала, браузера, ещё чего-нибудь. Единообразно, настраиваемо, с везде одинаковым и предсказуемым поведением, а не отличающимся от программы к программе, которая реализует вкладки каждая по-своему. На мой взгляд, правильным решением было бы плодить не вкладки, а исключительно окна, а управление ими отдать на откуп WM/Композитора, или отдельной софтины, сгребающей окна в «окно с вкладками», для WM без поддержки таковых (у suckless вроде есть такая софтина для иксов, но я её не пробовал — всегда WM умели).

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

Ты сам пишешь что

Это очень удобно на самом деле, и я всеми руками за отказ от вкладок внутри программы, потому что вкладками может очень удобно рулить WM/композитор

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

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

ну всё, ща получим за всех профессоров, которые помойки из цампуторов устраивают :))

Чтобы не теоретизировать я тебе сейчас расскажу что у меня открыто на рабочем компе: Трубогибный станок, чертежи. Вальцы гидравлические в трёх экземплярах. Методичка по Step7, Методичка по Omron, Bekhoff, Hitachy, Bosh. Все эти станки и устройства в процессе починки. И переписки с производителями. А, ещё Хипертерм и Кйеллберг открыты с Месой. Параллельно открыты планы, методички по функциям Фрикада, Джемини (помогает лучше кожанных мешков. Экономит уйму времени). И ещё вское. По кранам. Портовым, козловым, мостовым, кранбалкам. По сопроматам всякое. Гидравлика, магазины… В совершенно непредсказуемые моменты я могу подскочить и делать что-то из этой сферы. Из этих совершенно разрозненных сфер. Расскажи мне, что я делаю это не правильно. Всё это уже есть в закладках. Но по ним лазить вспоминать по ничего не говорящим закладкам - это хренью заниматься. Сидеть складывать закладочку к закладочке, тесёмочкой подшивать, в стопочки складывать… Идите вы все, фантазёры с полуторами вкладками и профессорами складывающими дессертации в Загрузки, в баню. Даже не думай сравнивать меня с задротами по пятому кругу открывающими одни и те же ссылки потому что забыли в каком году открывали и в каком окне в какой вкладке оно уже открыто. Я всё это воспринимаю с иронией, но всё же и вы не забывайте, что перед вами не плод вашего любимого образа такого вот раззявы.

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

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

Я же критикую подходы, когда вкладок ближе к сотне и больше.

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

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

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

вместо закладок все используют вкладки

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

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

И тогда вопрос, а почему вместо групп вкладок, нельзя использовать тупо окна?

Я бы так и делал, если бы была такая возможность. Но раз уж её нет, и приходится использовать встроенные вкладки, то пусть уж будут группы.

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

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

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

Блин. Рано я его похвалил. Почти неделю меня на работе небыло, а комп был оставлен на незасыпающем режиме (забыл отключить). Прихожу а там… Висит окошко «ваша лиса сожрала всю память нам пришлось её пристрелить». Вот и весь вказ

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

Всмысле нету, ты не можешь открыть несколько окон браузера? Как это

Я-то открыть могу. Но удобство работы с окнами что в Firefox, что в Chrominum убито напрочь. Они будут норовить открывать вкладки, настроить открытие именно в новом окне во всех случаях (средний клик, шифт+клик и т.д.) — вроде простая задача, но на практике получаются вечные какие-то затыки. Я пробовал, но в итоге выливается в неюзабельность — именно потому что оно уже давно ориентировано именно на встроенные вкладки.

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

Может когда-нибудь найду время и силы доковырять как-то это до вменяемо юзабельного состояния. Но пока временно смирился тем, как в мозилла себе это предсталяют. Вообще у меня есть идея отодрать-таки от FF движок и сделать свой очень сильно обезжиренный в плане «обвеса» форк, идейно что-то в духе всё того же uzbl, только на движке от фф. Но это относительно крупный и трудозатратный проект, и я к нему даже не приступал и не знаю, когда приступлю (если вообще).

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

Нашёл встроенное решение, которое выгружает вкладки при нехватке памяти:
https://support.mozilla.org/en-US/kb/unload-inactive-tabs-save-system-memory-firefox
Но вариант с browser.cache.memory.capacity мне больше нравится.

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

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

Нашёл встроенное решение, которое выгружает вкладки при нехватке памяти. Но вариант с browser.cache.memory.capacity мне больше нравится.

А то мы не знали о таких аддонах и опциях

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

Промежуточный итог.

Сейчас посмотрел на потребление и обнаружил что вся память опять сожрана (запущено четыре файрфокса).

Отредактировал подменный meminfo (до этого там был тот который в начале темы приведён) - поставил там

MemFree:           50000 kB
MemAvailable:     112000 kB
Active:          3000000 kB

вместо

MemFree:          350000 kB
MemAvailable:     512000 kB
Active:          2500000 kB
файрфокс начал что-то делать, жрать проц, спустя где-то минуту возня прекратилась, потребление памяти осталось как и было.

Сделал второе изменение

SwapTotal:       1580020 kB
SwapFree:          80020 kB
вместо 15гб свободного свапа. Файофокс опять начал какую-то возню и жор проца, и по итогу чуть снизил потребление памяти, но оно всё равно осталось большое (может гигабайт в сумме освободился, но точно я не замечал).

Выводы:

1) правки в подменном meminfo почти немедленно провоцируют фф на какую-то возню с памятью - то есть он действительно его учитывает

2) одного подменного meminfo всё-таки кажется недостаточно, надо ещё и жёстко ограничить ему права на выделение памяти больше какого-то лимита; возможно, у фф несколько аллокаторов, одни жрут память пока ядро её даёт, другие же ориетируются на meminfo.

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

А я пошёл другим путём - я оставил в override.conf это:

[Service]
# MemoryHigh=2.5G <-- убрал это
MemoryMax=4G
MemorySwapMax=0

BindReadOnlyPaths=/home/pchelobiaka/.fake_meminfo:/proc/meminfo

и память теперь совершенно не хочет падать меньше 3,5 гигов. всё же у меня работает связка. без меминфо об стену крашится, зависает, а MemoryHigh=2.5G и MemoryMax=4G держат его в тонусе.

PcheloBiaka
() автор топика

А лучше бы кто-нить нащупал как сделать так, чтобы лиса не заикалась после просмотра кучи вебмок. Тупо слайдшоу.

anonymous
()