Лимитирование ресурсов для контейнеров lxd
Ограничить использование памяти
lxc config set container_name limits.memory 100MB
Ограничение памяти для использования определенного процента оперативной памяти. Например, ограничение использования контейнерами только 40% от общего объема оперативной памяти.
lxc config set cn1 limits.memory 40%
Ограничение использования подкачки Контейнер можно настроить для включения/выключения использования устройства подкачки. Мы также можем настроить контейнер для выгрузки памяти на диск в первую очередь в зависимости от приоритета. По умолчанию своп включен для всех контейнеров.
lxc config set cn1 limits.memory.swap false
Установка мягких ограничений. Ограничения памяти жесткие по умолчанию. Мы можем настроить мягкие ограничения, чтобы контейнер мог использовать всю доступную память, пока система простаивает .
Однако, как только загрузка системы требует больше памяти, контейнер не может ничего выделять, пока он не окажется в пределах мягкого ограничения.
lxc config set cn1 limits.memory.enforce soft
Ограничить ресурсы CPU
Ограничить количество ядер:
lxc config set container_name limits.cpu 2
Для привязки к конкретным ядрам:
lxc config set container_name limits.cpu 0-0
Это заставит контейнер использовать только первое ядро. Чтобы использовать второе, нужно ввести 1-1. Чтобы использовать все ядра, с первого по третье, вводим 0-3.
Другой тип ограничения — это количество процессорного времени, которое может использовать контейнер:
lxc config set container_name limits.cpu.allowance 10ms/100ms
Это позволит контейнеру использовать только десять миллисекунд процессорного времени из каждых 100 миллисекунд, то есть около 10% одного ядра CPU.
Ограничить использование диска
Чтобы ограничить ресурсы, связанные с диском, необходимо сначала добавить в контейнер корневое дисковое устройство. Он уже существует по умолчанию, унаследованный от профиля LXD по умолчанию. Но можно изменить его настройки для каждого контейнера:
lxc config device add container_name root disk pool=default path=/
Чтобы ограничить место на диске, использовать:
lxc config device set container_name root size 7GB
К сожалению, ограничения ввода/вывода (скорости чтения/записи и IOPS) в данный момент не работают.
Ограничить использование сети
Установим лимиты сети, ingress (download) and/or egress (upload).
lxc config device set container_name eth0 limits.ingress 1Mbit