Как ограничить пользовательскую оперативную память и процессор
Так что это мой первый пост на форумах Ubuntu, поэтому, пожалуйста, извините меня, если этот вопрос повторяется или просто глуп.
Немного предыстории: я 14-летний разработчик, у меня есть сервер Ubuntu 20.04. Я открыл небольшую службу хостинга, и у нас было довольно много клиентов. Теперь у нас есть модель ценообразования, например, пользователи certian могут получить только 1 виртуальный ЦП и 4 ГБ оперативной памяти, в то время как другие пользователи могут получить 6 виртуальных ЦП и 20 ГБ оперативной памяти за 80 долларов США за 6 месяцев.
Моя проблема: я не могу ограничить количество vCPU и оперативной памяти, которые может получить пользователь. Я пробовал такие программы, как cgroups, но когда я проверил, сколько оперативной памяти у пользователя,
free -m
, сервер вернул мне 24Гб (Сколько Памяти На ВМ).
Мой вопрос: есть ли правильный способ ограничить использование оперативной памяти и виртуального процессора конкретным пользователем ? Желательно, если бы вы могли дать мне руководство, которое было бы прекрасно! Заранее спасибо за любую помощь, которую вы можете предложить!
Некоторый прогресс: с помощью cgroup я могу ограничить использование ЦП определенным пользователем (/sys/fs/cgroup/user.slice/user-USERID.slice). Здесь я могу отредактировать cpu.cfs_quota_us, но это ограничивает только процент ЦП. Также странно для меня, когда я делаю cat cpu.cfs_quota_us, я получаю 200000? Разве это не 200%? Я думал, что значение по умолчанию для max равно 101000? Тем не менее, мой главный вопрос: как я могу ограничить количество ядер и память каждого пользователя?
Дальнейший прогресс: согласно redhatguideforcgroup вместо использования каталога cpu каталог cpuset управляет многоядерностью , что, как мне кажется, мне нужно.
Теперь ИК приближаюсь. Находясь в каталоге /sys/fs/cgroup/cpuset, я могу запустить cat cpuset.cpus, и он возвращает мне 0-5 (это все 6 ядер, которые есть у меня на моей виртуальной машине). Теперь, если кто-то, кто знает основные cgroups (v2), может помочь мне с тем, как я могу установить это для конкретного пользователя, я был бы признателен. это помогло мне