KeyWeb
11111111111Rating 1.00 (1 Vote)
Каждый наверное сталкивался с проблемой потребления памяти браузерами, особенно если открыто много вкладок, например овер 100500... В данной статье пойдет речь не конкретно про Chrome и память, расскажу как залимитировать потребление памяти вообще для любого процесса в итоге это протестируем и применим на Chrome / Chromium / Firefox / другой софт.
На самом деле здесь все относительно просто (особенно после некоторого разбирательства), реализовать лимиты по потреблению ресурсов можно при помощи cgroups, посредством которого можно ограничить такие ресурсы, как - память, процессор, io, сетевые. Далее расскажу, как я это сделал в своей Fedora.

Установка и настройка libcgroup-tools

Здесь все просто:
dnf install libcgroup-tools
Далее создаем группу, с параметрами лимита в файле - /etc/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
Нагружаем ОЗУ:
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
...
Т.е. разница между 5592 и 5632 ровно в 40 метров.

Запуск ограниченного браузера :)

Здесь все просто, для браузера создал отдельную группу browsers, где потребяемая memory будет составлять 7Gb ОЗУ и выставлены лимиты по CPU (подробнее о CPU лимитах):
group browsers {
  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
Параметр запуска для ярлыка для Google Chrome:
cgexec -g cpu,memory:browsers /usr/bin/google-chrome-stable %U
Аналогичо для Chromium:
cgexec -g cpu,memory:browsers /usr/bin/chromium-browser %U
Спасибо за предварительную ссылку @RatLab, этому блогу, этому гайду.

Добавить комментарий


Обновить
Защитный код

KeyWeb

Сейчас 97 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз