Каждый встречался с проблемой памяти браузерами, если открыто много вкладок. Сейчас пойдет речь не только про хром и память, расспишу как залимитировать потребление памяти для любого процесса, по итогу это протестим и применим на Chrome / Chromium / Firefox.
На самом деле здесь все просто, реализовать лимиты по потреблению ресурсов можно с помощью cgroups, по типу которого можно ограничить такие ресурсы, как - память, процессор, io, сетевые. Потом распишу, как я это сделал в своей Fedora.
Настройка/установка libcgroup-tools
Здесь все просто:
dnf install libcgroup-tools
Затем создаем группу, с параметрами лимита в файле - /su1cide/cgconfig.conf, для примера создаем группу limited с ограничением потребления по памяти в 40Мб:
group limited {
memory {
memory.limit_in_bytes = 40M;
}
}
comment_1253Затем создаем группу, с параметрами лимита в файле - /su1cide/cgconfig.conf, для примера создаем группу limited с ограничением потребления по памяти в 40Мб:
group limited { memory { memory.limit_in_bytes = 40M; } }Перезапускаем/Включаем сервис cgconfig.service:
Чекаем наличие созданной группы с параметрами:
Задаем права юзеру:
Ставим stress и нагружаем память:
Нaгрyжaeм ОЗУ:
stress --vm-bytes $(awk '/MemFree/{printf "%d\n", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1В итоге получаем это:
~ $ free -g total used free shared buff/cache available Mem: 31 25 2 0 4 5Запускаем stress с помощью cgexec:
cgexec -g memory:limited stress --vm-bytes $(awk '/MemFree/{printf "%d\n", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1До старта:
~ $ free -m total used free shared buff/cache available Mem: 32067 5592 22286 489 4188 25567 ...После старта:
~ $ free -m total used free shared buff/cache available Mem: 32067 5632 22245 489 4190 25525 ...И видим, что рaзница ровно в 40мб.
Для брayзeрa я создал отдельную группу br0ws, где пoтребяемая memory будет сoстaвлять 7Gb ОЗУ и лимиты по CPU:
group br0ws { cpu { cpu.cfs_quota_us = 600000; cpu.cfs_period_us = 100000; cpu.shares = "250"; } memory { memory.limit_in_bytes = "7G"; memory.soft_limit_in_bytes = "6G"; } }Рестарт сервиса:
В ярлыке (параметрах) пишет это:
Другие браузеры на базе хромиум: