LINUX.ORG.RU

Укрощаем cgroups

 , ,


0

3

Как его настроить?

Сделал для примера /etc/cgroup/cgconfig.conf:

xor		cpuset		user/xor/
*:emerge	cpuset		emerge/
*		*		default/

/etc/cgroup/cgconfig.conf:

mount {
	cpuset = /mnt/cgroups/cpu;
}

Оно мне создало в cpu каталог emerge, и поместило туда все процессы в системе (причем видимо даже умершие процессы оттуда не убираются).

cgconfig и cgred в boot уровне openrc

А если пытаюсь ручками сделать echo $$ > test/tasks

bash: echo: ошибка записи: На устройстве не осталось свободного места

ЧЯДНТ?

★★★★★

Права, на каталоги всех подуровней.

anonymous
()

у тебя какая версия openrc? по умолчанию cgroup_root находится в /sys/fs/cgroups/ <- сюда свои иерархии и монтируй.

qnikst ★★★★★
()

да.. инит cgconfig эталонный шлак, все не доходят руки, чтобы его до ума довести, не уверен, что он вообще нужен.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

у тебя какая версия openrc?

~amd64 последняя

по умолчанию cgroup_root находится в /sys/fs/cgroups/ <- сюда свои иерархии и монтируй.

В том то и дело, что уже всё смонтированно туда кем-то

xorik ★★★★★
() автор топика
Ответ на: комментарий от qnikst

Я так понял он права выставляет папкам.

Я добрался до исходников, вот что при дебаге вылазит:

Found matching rule xor for PID: 2248, UID: 1000, GID: 104
Executing rule xor for PID 2248... Will move pid 2248 to cgroup 'user/xor/'
Adding controller cpuset
cgroup_attach_task_pid failed:50002

xorik ★★★★★
() автор топика
Ответ на: комментарий от xorik

не кем-то а openrc, man rc.conf, чтобы отключить, хотя имхо лучше не стоит. Для emerge делаешь свою иерархию средствами или openrc или libcgroup.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

Я так понял достаточно черезжопная эта штука cgconfig. То что мне надо не создаёт. Поэтому группы лучше создавать ручками при загрузке системы.

cgred вроде получше: детектит процессы по юзеру или по названию процесса, и помещает в нужную группу (если нужный каталог cgroup смонтирован). Но с emerge его подружить не получится (т.к. emerge это на самом деле /usr/bin/python2.7 /usr/bin/emerge), так что придется всё что питоновское и от рута, засовывать в группу emerge.

Вообще очень хотелось бы потыкать яндексовый велосипед (очень рекомендую презентацию: http://tech.yandex.ru/education/kit/4/talks/1553/)

xorik ★★★★★
() автор топика

А можно пожалуйста в кратце, что это и зачем оно не нужно? погуглить не могу, пишу с табуретки.

NeverLoved ★★★★★
()
Ответ на: комментарий от qnikst

Опа, если openrc изкоробки умеет иерархию создавать, то надо попробовать. Хотя хотелось бы поуниверсальнее, чтобы потом в дебиане применять :)

xorik ★★★★★
() автор топика
Ответ на: комментарий от NeverLoved

А можно пожалуйста в кратце, что это и зачем оно не нужно? погуглить не могу, пишу с табуретки.

Ограничивать ресурсы группе процессов. Например чтобы торренты не жрали весь канал сетевой, или чтобы компиляция была по приоритету на проц ниже, чем фильмы. Или еще пример, чтобы бэкап на сервере не ставил систему раком, ограничиваешь приоритет к жесткому диску.

xorik ★★★★★
() автор топика
Ответ на: комментарий от xorik

хм, выглядит вкусно, благодарю, надо будет потыкать.

NeverLoved ★★★★★
()
Ответ на: комментарий от xorik

А еще можно прикрутить графики и мониторить, сколько проца/диска/памяти какой сервис сожрал (если разнесешь их по группам)

xorik ★★★★★
() автор топика
Ответ на: комментарий от xorik

cgconfig вообще отстой, я его не выпилил только потому, что не уверен, что все его юзкейсы покрываются стандартными средствами. У меня где-то валяется подчищенный init, но не уверен, что скоро доберусь, чтобы его закоммитить.

emerge (9999) умеет цгруппы и неймспейсы сам по себе, точно в документацию не ткну, но погуглить можно, я думаю это будет наиболее простой метод.

Ок, посмотрю при возможности.

qnikst ★★★★★
()
Ответ на: комментарий от xorik

в openrc пока нету user-hierarchies, оно у меня в TODO уже больше года лежит :). Я как плагины для супервижона доделаю и пропихну займусь, сейчас поддержка не полноценная, и только для стандартных групп.

qnikst ★★★★★
()
Ответ на: комментарий от qnikst

я его не выпилил

ты мантейнер либцгруп?

emerge (9999) умеет цгруппы и неймспейсы

шикарно, но гугление ничего не нашло :)

xorik ★★★★★
() автор топика
Ответ на: комментарий от xorik

один из девов (не особо активный) openrc, по либцгруппам на мне баг о cgconfig висит, заметили что оно башизмов больно много использует, а оказалось, что там треш и угар, который непонятно как вообще работать должен.

qnikst ★★★★★
()
Ответ на: комментарий от anonymous

systemd не решит эту конкретную проблему

qnikst ★★★★★
()
Ответ на: комментарий от xorik

не зависит, но инитскрипты это часто зона ответственности openrc herd-а.

qnikst ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.