Попытка использовать cgroups в debian wheezy и без демонов

Я пытаюсь следовать руководствам по контрольным группам, например этому как пример. Я не совсем уверен, что четко понимаю, как cgroups должны работать в настоящее время. Но я уверен в одном: все руководства, которые я нахожу, документируют использование /etc/cgconfig.conf и /etc/cgrules.conf. Эти файлы должны быть загружены двумя демонами, которые, я думаю, должны быть названы cgred и cgconfig.

В Debian Squeeze кажется, что эти два демона автоматически устанавливаются при установке cgroup-bin. Но в Wheezy этих демонов больше нет в пакете: http://packages.debian.org/fr/wheezy/amd64/cgroup-bin/filelist .

Я просто пытаюсь создать какое-то решение для общего хостинга и хотел бы ограничить использование оперативной памяти моими пользователями. Мне рассказали о cgroups, и я хотел попробовать, но я не понимаю, как использовать эту версию в Wheezy, и я не могу найти никакой документации, которая могла бы мне помочь.

Может ли кто-нибудь сказать мне, что делать? Этот пакет сломан? Есть ли какой-то совершенно новый (и недокументированный) способ настройки контрольных групп?


person nicolas-van    schedule 24.01.2014    source источник
comment
Инит-скрипты отсутствуют. В /usr/share/doc/cgroup-bin/cgred есть один файл для демона cgrulesengined, но он не работает. Другой, вероятно, не демон, а просто cgconfigparser, который должен запускаться при запуске для создания ваших контрольных групп. Когда у меня будет решение, я, скорее всего, опубликую его здесь.   -  person Hannes    schedule 28.01.2014


Ответы (1)


В качестве альтернативы использованию cgroup-bin посмотрите на systemd, он использует cgroups для группировки/разделения процессов пользователей, и использование контроллеров ресурсов должно быть в порядке.

Однако в дальнейшем я попытаюсь ответить на ваш первоначальный вопрос о cgroup-bin

Поскольку с этим связано несколько проблем, я выполняю:

В пакетах отсутствуют init-скрипты. Однако есть /usr/share/doc/cgroup-bin/examples/cgred, который частично работает (у меня запускается cgrulesengd при загрузке системы, но пока не перезапускает демон). Удалите строку с некоторыми функциями инициализации, которых нет в debian, прежде чем использовать их. Однако вы также можете запустить его через /etc/rc.local.

У меня есть следующее cgconfig.conf

mount {
  cpu    = /sys/fs/cgroup ;
  cpuset = /sys/fs/cgroup ;
  memory = /sys/fs/cgroup ;
}

group users {
  memory {
    memory.soft_limit_in_bytes = 512M;
    memory.limit_in_bytes = 1G;
  }

# cpuset seems to be obligatory, adjust the parameters
  cpuset {
    cpuset.cpus = 0-7 ;
    cpuset.mems = 0 ;
  }
}

Чтобы загрузить cgconfig.conf, выполните cgconfigparser -l /etc/cgconfig.conf. Вы можете сделать это в /etc/rc.local при запуске.

Debian по умолчанию отключает подсистему memory в ядре, поэтому вам нужно активировать ее, если вам это нужно: установите командную строку ядра в /etc/default/grub для загрузки подсистемы памяти: GRUB_CMDLINE_LINUX_DEFAULT="quiet cgroup_enable=memory". Позвоните update-grub и перезагрузитесь.

Теперь у вас должна быть смонтированная файловая система cgroup в /sys/fs/cgroup с каталогом users внутри.

Попробуйте cgexec -g memory,cpuset:users <command> и посмотрите системный журнал на наличие ошибок.

person Hannes    schedule 28.01.2014