LINUX.ORG.RU

ограничить пожирание памяти хромом

 , ,


0

1

наткнулся на интересный, а может и нет, совет по ограничению потребления хромом памяти. Кто что скажет? Вроде работает, но я тестировал на вивальди, может там и сами уже нахимичили. У себя ограничил до 1 гб

Кто не в курсе после добавления новых юнитов надо делать sudo systemctl daemon-reload


Not exactly performance, but I make a ~/.config/systemd/user/chrome.slice with this in it on desktops using systemd:

[Slice]
MemoryHigh=2G
MemoryMax=2.5G
and then modify the Chrome .desktop file and change the Exec line to be:

/usr/bin/systemd-run --user --slice chrome.slice /usr/bin/google-chrome-stable %U 
This limits the amount of memory that Chrome can use, and the technique works for other applications as well, obviously.

If Chrome wants to be bad and eat my memory, I can just tell it that it has less memory to work with.

https://www.reddit.com/r/linux/comments/17xeul1/what_is_your_favorite_linux_tweak_to_improve/

Перемещено hobbit из general



Последнее исправление: monkdt (всего исправлений: 4)

Было бы прикольно научить гномощель парсить дополнительные секции в .desktop-файле и добавлять их в scope-юнит, который она автоматически создаёт на каждое запускаемое приложение.

Ну и потом стандартизировать и научить кеды делать то же самое.

Глядишь, так и до application-based файрвола линукс через сколько-то лет доедет.

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

да я тоже смутно припоминаю, что видел его много лет назад

За счет чего ограничения? По идее хром должен начать много писАть на диск и дико тормозить на простых hdd. Но пока этого не произошло

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

Но это и сейчас кое-как работает, если все нужные опции помещать в отдельный дроп-ин.

Вот если бы появилась возможенсть контролировать device access в user сервисах – это был бы большой прогресс.

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

Но это и сейчас кое-как работает, если все нужные опции помещать в отдельный дроп-ин.

Гномощель, увы, генерирует рандомные имена:

$ systemctl --user list-units --output=json 'app-*' | jq -r '.[].unit'
app-flatpak-com.discordapp.Discord-3338897.scope
app-flatpak-com.discordapp.Discord-3338933.scope
app-flatpak-com.spotify.Client-2630146.scope
app-gnome-firefox-2818.scope
app-gnome-guake-1963.scope
app-gnome-guake\x2dtoggle-232434.scope
app-gnome-guake\x2dtoggle-232689.scope
app-gnome-guake\x2dtoggle-272877.scope
app-gnome-guake\x2dtoggle-315720.scope
app-gnome-guake\x2dtoggle-439716.scope
app-gnome-im.dino.Dino-3955.scope
app-gnome-org.gnome.Evolution\x2dalarm\x2dnotify-1988.scope
app-gnome-org.gnome.SettingsDaemon.DiskUtilityNotify-1980.scope
app-gnome-org.gnome.Software-2008.scope
app-gnome-sublime_text-1275660.scope
app-gnome-syncthingtray-1955.scope
app-gnome\x2dsession\x2dmanager.slice
app-org.gnome.Terminal.slice

А псевдо-директиву .include из системд давно выпилили (да и даже если бы нет, это всё равно потребовало бы кооперации со стороны щели).

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

Так положите дропин в user/app-gnome-firefox-.scope.d/, например.

As described in systemd.unit(5), the settings listed here may be set through the main file of a unit and drop-in snippets in *.d/ directories. The list of directories searched for drop-ins includes names formed by repeatedly truncating the unit name after all dashes. This is particularly convenient to set resource limits for a group of units with similar names.

Или я вас не понял.

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

Нет, ты всё понял, это я не был в курсе об этой фиче %)

Это на самом деле очень круто, это многое меняет. А управление device access в пользовательских юнитах — это вопрос unprivileged BPF, когда оно в ядре появится в нужной форме (и появится ли вообще).

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

У тебя ssd? Не жалко зарезервировать ~10-20гб места? Тогда всё это не имеет смысла!

zswap, немного тюнинга:

echo 64 > /proc/sys/vm/page-cluster
echo 65536 > /proc/sys/vm/min_free_kbytes
echo 100 > /proc/sys/vm/swappiness
echo 500 > /proc/sys/vm/watermark_scale_factor

modprobe z3fold
echo z3fold > /sys/module/zswap/parameters/zpool
echo 25 > /sys/module/zswap/parameters/max_pool_percent
echo 1 > /sys/module/zswap/parameters/enabled
... и оно будет глотать вкладки десятками если есть хотя бы 2-3гб оперативки! Причём свопиться - быстрее чем новомодные механизмы ограничения памяти браузером, которые просто отбрасывают загруженные страницы и грузят их заново.

Ещё один нюанс - желательно не давать systemd мешать работе своп-подсистемы всякими настройками лимитов через cgrops. А «MemoryHigh=2G MemoryMax=2.5G» это похоже оно самое. Я вообще за то, чтобы на десктопе cgroup_disable=memory ядру при запуске.

Также у меня большое подозрение (хотя я и не уверен на100%), что «MemoryHigh=2G MemoryMax=2.5G» это всё тот же свопинг, только принудительно для группы процессов в данном слайсе. Зажав браузер в узких рамках ты скорее всего ничего не выиграешь, а предложенный мной тюнинг свопа помогает.

З.Ы. Да, забыл ещё раз упомянуть что zswap и zram (если у тебя уже есть) делают одно и то же, а значит будут конкурировать. Как по мне - zswap проще и эффективней. Просто его реже в гугле упоминают.

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

Он нигде не дефолт. Везде zsmalloc или zbud. Причём zsmalloc раньше не сбрасывал данные на диск и работал в режиме zram без backing_dev. По непроверенным (мной) слухам - с какой то версии ядра это починили и теперь им тоже можно пользоваться.

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

и оно будет глотать вкладки десятками если есть хотя бы 2-3гб оперативки! Причём свопиться - быстрее чем новомодные механизмы ограничения памяти браузером

Похоже ты не читал и не комментировал тему Есть ли на ЛОР-е адепты яблочных ноутбуков?. Там как раз обсуждалось заявление одного из менеджеров Apple, что новый Mac Pro с 8Gb RAM ощущается, как с 16Gb. ) В комментах - «такого не может быть».

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

Я просто фанат малинок, очень долго и упорно сидел на пи3 с 1гб памяти, отдал свой типа-игровой 8гб ноут брату на учёбу и пересел за старый HP c 2гб (ну, с сентября аж 4). Короче опыт свопинга конкретно кучи вкладок в браузерах богатый.

Да, и не знаю как там на маках, но линукс по сравнению с виндой это -1,5-2гб мусора и +30% оперативки за счёт сжатия.

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

где z3fold не дефолтно?

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

$ cat /sys/module/zswap/parameters/zpool
zsmalloc

p.s. Но хоть включать zswap не надо в арче, наоборот, часто ищут как выключить. )

Во всех официально поддерживаемых ядрах zswap включен по умолчанию.
арчвики

$ zgrep CONFIG_ZSWAP_DEFAULT_ON /proc/config.gz
CONFIG_ZSWAP_DEFAULT_ON=y`

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

Был неправ

Или раньше действительно он был дефолтным, давно не пользовался:

По умолчанию создается zpool типа z3fold . Используйте параметр ядра zswap.zpool чтобы выбрать другой распределитель во время загрузки.

В более поздних ядрах (после версии 6.3.arch1-1 +) был добавлен распределитель zsmalloc. Предполагается, что он хорошо работает в условиях нехватки памяти и экономит больше памяти.

арчвики

krasnh ★★★
()