Back to questions
Wildberries
Senior
7
Как ограничить использование оперативной памяти для процесса через cgroups в Linux?
Companies where asked
Answer from AI
sobes.tech AI
Для ограничения использования оперативной памяти процесса через cgroups в Linux нужно:
- Создать или использовать существующую cgroup в подсистеме памяти (memory).
- Установить лимит памяти, записав нужное значение в файл
memory.limit_in_bytes. - Добавить PID процесса в файл
cgroup.procsэтой cgroup.
Пример:
# Создаём директорию cgroup (если используется cgroup v1)
sudo mkdir /sys/fs/cgroup/memory/mygroup
# Устанавливаем лимит памяти, например 500МБ
echo $((500*1024*1024)) | sudo tee /sys/fs/cgroup/memory/mygroup/memory.limit_in_bytes
# Добавляем процесс с PID 1234 в эту cgroup
echo 1234 | sudo tee /sys/fs/cgroup/memory/mygroup/cgroup.procs
Для cgroup v2 команды и пути могут отличаться, например:
# Создаём cgroup
sudo mkdir /sys/fs/cgroup/mygroup
# Устанавливаем лимит памяти
echo $((500*1024*1024)) | sudo tee /sys/fs/cgroup/mygroup/memory.max
# Добавляем процесс
echo 1234 | sudo tee /sys/fs/cgroup/mygroup/cgroup.procs
Важно: для работы с cgroups нужны права root или соответствующие привилегии. Также стоит учитывать, что при превышении лимита памяти процесс может быть убит ядром (OOM killer).