Конфигурация CGroup в CentOS 7

Я использую CentOS 7, и у меня есть несколько пользователей, зарегистрированных в системе (UID: 1000, 1001, 1002 и т.д.)

Я хочу ограничить потребление памяти для каждого пользователя с помощью cgroup и systemd.

Следующие команды работают довольно хорошо, но пользователь с UID = 1000 должен войти в систему.

systemctl set-property user-1000.slice MemoryLimit=3000M
systemctl daemon-reload

Если пользователь не вошел в систему, я получаю следующее сообщение об ошибке.

Failed to set unit properties on user-1000.slice: Unit user-1000.slice is not loaded.

Представьте, что у меня есть 20 пользователей, и я хочу настроить ограничения памяти для них. Должен ли я войти в систему вручную или написать сценарий обходного пути, чтобы выполнить команду systemctl set-property для каждого пользователя? Или существует какое-то изящное и простое решение?

0
задан 18 November 2017 в 17:37
1 ответ

Здесь есть ответ на аналогичный вопрос: https://unix.stackexchange.com/questions/34334/how-to-create-a-user-with-limited-ram-usage

Пределы налагается ulimit и limits.conf для каждого процесса. Я определенно не понял этого вопроса.

Если вы хотите ограничить общий объем памяти, который использует пользователь (это то, что вы просили). Вы хотите использовать контрольные группы.

В /etc/cgconfig.conf :

 group memlimit {
  объем памяти {
  memory.limit_in_bytes = 4294967296;
  }
 }
 

Это создает контрольную группу с максимальным пределом памяти в 4 ГиБ.

В /etc/cgrules.conf :

 luser memory memlimit /
 

Это приведет к тому, что все процессы, запущенные luser , будут выполняться внутри контрольных групп memlimit , созданных в cgconfig.conf .

0
ответ дан 5 December 2019 в 07:08

Теги

Похожие вопросы