Начиная с версии 2.6.24 в ядре Linux содержится очень мощный инструмент — Control Groups (cgroup). Он позволяет ограничить ресурсы центрального процессора, оперативной памяти или подсистемы ввода-вывода, выполнять приоритезацию и изоляцию процессов, прикреплять процессы к конкретным ядрам процессора.
Далее будет приведен пример установки и использования cgroup в популярных дистрибутивах Linux.
Для RHEL/CentOS установка может быть выполнена следующим образом:
yum install libcgroup chkconfig cgconfig on service cgconfig start
Для Debian/Ubuntu:
apt-get install cgroup-bin libcgroup1
Проверям что croup работает:
lssubsys -am cpuset /sys/fs/cgroup/cpuset cpu /sys/fs/cgroup/cpu cpuacct /sys/fs/cgroup/cpuacct memory /sys/fs/cgroup/memory devices /sys/fs/cgroup/devices freezer /sys/fs/cgroup/freezer blkio /sys/fs/cgroup/blkio perf_event /sys/fs/cgroup/perf_event
Далее приведем пример ограничение ресурсов CPU и памяти для веб-сервера в Debian/Ubuntu:
Настройки контрольных групп расположены в конфигурационном файле /etc/cgconfig.conf.
group apache2 { perm { admin { uid = root; } task { uid = www-data; } } cpu { cpu.shares = 500; } memory { memory.limit_in_bytes = 1073741824; memory.memsw.limit_in_bytes = 1073741824; } }
- cpu.shares — относительная величина, которая определяет доступное процессорное время.
- memory.limit_in_bytes — ограничение на используемую память
- memory.memsw.limit_in_bytes — ограничение на используемые память + своп
За автоматическое назначение процессов в контрольные группы отвечает конфигурационный файл /etc/cgrules.conf и демон cgrulesengd.
#www-data cpu,memory apache2
Перезапускаем сервисы для применения конфигов
service cgconfig restart service cgred restart
Проверяем, что интересующие нас процессы попали под наблюдение:
cat /sys/fs/cgroup/cpu/apache2/tasks 1244 1246 1247 ... cat /sys/fs/cgroup/memory/apache2/tasks 1244 1246 1247 ...
6 комментариев “Пример использования cgroup для ограничения ресурсов”
apt-get install cgroup-bin libcgroup1
ok
lssubsys -am
bash: /usr/bin/lssubsys: No such file or directory
sudo apt-cache search lssubsys
ничего
В инете тонна описалова, что это круто, но что бы в ubuntu это все реализовать, нужно камень за каменм выдергивать из разных блогов инфо.
Потому что apt-cache search ищет в именах и описании пакетов. Внутри пакетов ищет apt-file search:
yum install libc ? Вы уверены? =)
Спасибо, поправил.
task uid — это пользователь из-под которого запущен процесс, который мы загоняем в рамки контрольной группы.
Здравствуйте. Интересная штука. А подскажите как настроить конфиг не для апача а для goole chrome? В /etc/cgconfig.conf permition admin uid=root, тоесть кто обладает правами на изменения, а task uid — это что?