Пример использования cgroup для ограничения ресурсов 6


Начиная с версии 2.6.24 в ядре содержится очень мощный инструмент — Control Groups (). Он позволяет ограничить ресурсы центрального процессора, оперативной памяти или подсистемы ввода-вывода, выполнять приоритезацию и изоляцию процессов, прикреплять процессы к конкретным ядрам процессора.

Далее будет приведен пример установки и использования cgroup в популярных дистрибутивах Linux.

Для RHEL/ установка может быть выполнена следующим образом:

yum install libcgroup
chkconfig cgconfig on
service cgconfig start

Для Debian/:

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 для ограничения ресурсов

  • Dmitry

    apt-get install cgroup-bin libcgroup1
    ok
    lssubsys -am
    bash: /usr/bin/lssubsys: No such file or directory
    sudo apt-cache search lssubsys
    ничего

    В инете тонна описалова, что это круто, но что бы в ubuntu это все реализовать, нужно камень за каменм выдергивать из разных блогов инфо.

    • Rascal От автора

      Потому что apt-cache search ищет в именах и описании пакетов. Внутри пакетов ищет apt-file search:

       [email protected]:~# apt-file search lssubsys cgroup-tools: /usr/bin/lssubsys cgroup-tools: /usr/share/man/man1/lssubsys.1.gz 
  • Rascal От автора

    task uid — это пользователь из-под которого запущен процесс, который мы загоняем в рамки контрольной группы.

  • zzigzz

    Здравствуйте. Интересная штука. А подскажите как настроить конфиг не для апача а для goole chrome? В /etc/cgconfig.conf permition admin uid=root, тоесть кто обладает правами на изменения, а task uid — это что?

Комментарии закрыты