Уже около 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% памяти?

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

asegfvawer
источник