среда, 5 октября 2022 г.

Лимиты памяти в LXC для CGroupV2

С неделю назад мигрировал ряд сервисов на базе контейнеров LXC в облако. Чтобы не переплачивать за простаивающие ресурсы в облаке взял в два раза меньше памяти и процессорных ядер. Поскольку нагрузка на сервисы минимальная, а памяти на исходном сервере было с запасом, то лимиты по памяти и ядрам не были настроены, но в условиях потенциальной нехватки ресурсов нужно решить проблему "шумного соседа" (когда один сервис может исчерпать ресурсы всего сервера и привести к нестабильной работе или отказу в обслуживании у остальных сервисов).

Для начала настроил сколько RAM и SWAP может использовать каждый из контейнеров.

# Resource limits
lxc.cgroup2.memory.max = 2048M
lxc.cgroup2.memory.swap.max = 256M

В Debian 11 по-умолчанию systemd использует unified структуру и если вы ранее настраивали лимиты в cgroupv1, то нужно сделать миграцию. Чтобы лимиты применились нужно остановить и запустить контейнер заново (перезагрузки будет недостаточно).

Позже выяснилось что инструментарий LXC еще не полностью поддерживает cgroupv2 и показания RAM/SWAP отсутствуют в выводе lxc-ls

$ sudo lxc-ls -1 -f -F NAME,STATE,RAM,SWAP
NAME          STATE   RAM    SWAP
gitlab        RUNNING 0.00MB 0.00MB
gitlab-runner RUNNING 0.00MB 0.00MB
jenkins       RUNNING 0.00MB 0.00MB
nagios4       RUNNING 0.00MB 0.00MB
nextcloud     RUNNING 0.00MB 0.00MB

Чтобы иметь представление об использовании памяти набросал небольшой скриптик. Пример вывода:

$ lxc-mem
                NAME            RAM            SWAP
-------------------------------------------------------
              gitlab     3337/ 4096         0/ 2048
       gitlab-runner      844/ 2048         0/  256
             jenkins      840/ 2048         4/  256
             nagios4      179/ 1024         0/  256
           nextcloud      271/ 2048         0/  256
------------------------------------------------------
               TOTAL     5471/11264         4/ 3072

Для RAM и SWAP информацию выводится в формате usage/limit в мегабайтах.

Комментариев нет:

Отправить комментарий