Уже около 5 лет я хочу ограничить процессор пользователя в CentOS (6) - без использования cloudlinux.
До сих пор так и не удалось получить ответ на этот вопрос. cgroups, кажется, решение. Тем не менее, я не знаю, как настроить файл конфигурации.
Вот вопрос, который начинает отвечать на него, но не отвечает на этот вопрос. Я ищу снова каждые несколько месяцев, но безрезультатно.
Как ограничить пользователя всего 10% процессорного времени, а не только процесс?
Я серьезно нуждаюсь в помощи, настраивая это, поскольку это действительно необходимо.
Вот что я получил до сих пор.
Я установил сервис libcgroup yum install libcgroup
.
Я проверил ls /cgroup
и подтвердил, что он установлен. Я получаю этот вывод:
blkio cpu cpuacct cpuset devices freezer memory net_cls
Теперь я пошел в cgconfig.conf
файл. Это расположено в/etc/cgconfig.conf
Под mount { ... }
разделом в cgconfig.conf
файле я добавил следующее. Я не знаю, если это правильно (не знаю, если это делает 10% процессорного времени).
Мне нужна помощь, чтобы закончить это, чтобы я мог, наконец, ограничить пользователя до желаемого процента процессора (и, в идеале, памяти, если это возможно!)
Это делается для создания группы с именем limitcpu
(хотя я на самом деле хочу называть ее ограниченной группой или чем-то еще, потому что я также хочу ограничить память, но сейчас давайте просто назовем ее limitcpu
группой).
group limitcpu {
cpu {
cpu.shares = 200;
# cpu.cfs_period_us
# cpu.cfs_quota_us
}
memory {
}
}
Тогда я должен использовать этот шаблон:
template users/%g/%u {
cpuacct{
}
cpu {
cpu.shares = "1000";
}
}
%g
должно быть именем группы.
%u
должен быть именем пользователя.
Хорошо, так называется мой пользователь, которого я хочу ограничить, называется resourcehoggeruser
. Как мне выполнить вышеуказанную конфигурацию, чтобы ограничить процессор и память, выделенную этому пользователю?
Должно ли это выглядеть примерно так?
template users/limitcpu/resourcehoggeruser {
cpuacct{
}
cpu {
cpu.shares = "1000";
}
}
- Что еще мне нужно, чтобы это работало? Вышеупомянутый даже точный код?
- Будет ли это делать то, что я хочу, когда код правильный, то есть ограничивать любые процессы, когда-либо порожденные именем пользователя, до желаемого процента от общего процессорного времени?
- Это правильное место в файле для размещения этого кода?
Что такое «доля»? Скажем, у меня 16 процессоров и 24 ГБ оперативной памяти.
- На какое число я ставлю,
cpu.shares
если я хочу иметь 10% процессорного времени? - Как насчет 20% процессора?
Как насчет памяти?
- Какой код я также использую, чтобы ограничить память для всех процессов пользователем?
- Если он использует что-то, как я могу догадаться,
mem.shares
то какие будут «доли» для 10% памяти? Как насчет 20% памяти?
Я очень ценю вашу помощь! Огромное спасибо. Мне действительно нужно, чтобы это работало. Я искал долго и упорно и до сих пор не могу найти однозначный ответ, так что я действительно нужна ваша помощь.