Перейти к содержанию
Опубликовано
comment_1253
Каждый встречался с проблемой памяти браузерами, если открыто много вкладок. Сейчас пойдет речь не только про хром и память, расспишу как залимитировать потребление памяти для любого процесса, по итогу это протестим и применим на 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;
  }
}


Перезапускаем/Включаем сервис cgconfig.service:

systemctl enable cgconfig.service && systemctl start cgconfig.service
  • Проверка параметров
 

Чекаем наличие созданной группы с параметрами:

ls /sys/fs/cgroup/memory/limited

Задаем права юзеру:

chown -R userName /sys/fs/cgroup/memory/limited/

Ставим stress и нагружаем память:

dnf install 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";
  }
}

Рестарт сервиса:

systemctl restart cgconfig.service


В ярлыке (параметрах) пишет это:

cgexec -g cpu,memory:br0ws /usr/bin/google-chrome-stable %U

Другие браузеры на базе хромиум:

cgexec -g cpu,memory:br0ws /usr/bin/chromium-browser %U

 


Homepage: suicidee.ml

 


Мои каналы telegram:



 

Рекомендуемые сообщения