Уже около 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% cpu? - Как насчет 20% процессора?
Как насчет памяти?
- Какой код я также использую, чтобы ограничить память для всех процессов пользователем?
- Если он использует что-то, как я могу догадаться,
mem.shares
, то какие будут "общие ресурсы " для 10% памяти? Как насчет 20% памяти?
Я очень ценю вашу помощь! Огромное спасибо. Мне действительно нужно, чтобы это работало. Я искал долго и упорно и до сих пор не могу найти однозначный ответ, так что я действительно нужна ваша помощь.