1

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

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

0