Планирование ресурсов

Всем привет

Подскажите, как вы планируете необходимое количество ОЗУ? Сколько ОЗУ вы веделяете контейнерам?

Ранее у меня была отдельная VM, в которой крутился докер с сервисами. Сейчас буду уходить на LXC + Docker и тут нужно выделить какое-то количество ОЗУ каждому контейнеру. Пытаюсь оценить нужное количество ОЗУ. Сделал таблицу

Минимальное количество: это максимально зафиксированное мной количество ОЗУ, которое потреблял сервис

Рекомендуемое количество: это минимум * 1.5 или же минимально необходимое количество, которое требует разраб (выбираю что больше из 2 параметров)

Максимальное: максимум, который требует разраб

Понятное дело, что можно запустить контейнер на большее количество ОЗУ, покрутить неделю, набрать стату и уже в зависимости от статы скорректировать значения ОЗУ для контейнера. Но мне этот варик не подходит, так как сейчас на моем старом минике 16 ГБ и все запустить не смогу

Возможно этот вопрос кажется странным (он и мне кажется странным), но это оказалось небольшой проблемой для меня))

Сейчас жду новый мини к с 32 ГБ ОЗУ. И, как оказалось, этого не так уж и много… Пол года назад я начал знакомство с домашним сервером используя Raspberry Pi на 8Gb. И мне тогда казалось “Зачем столько :sweat_smile:?”

1 лайк

Ну тут мы таки исходим из того, что LXC/Docker/K8S имеют 2 значения ресурсов

  • Запрашиваемое/резервируемое значение - то, что должно быть минимум на хосте для запуска сервиса
  • Максимальное значение, доступное сервису, выше которого он не может использовать ресурсы

1 Параметр в основном используется в k8s для определения узла, на котором запускать конкретный сервис (точнее под), ну т.е. мы определяем, формально сервис влезет или нет, для PVE это не особо существенно т.к. распределением контейнеров мы занимаемся сами
2 Параметр вообще опционален, но PVE решили его сделать обязательным (тут я подозреваю, что это было сделано для унификации VM и CT)

Но оба этих параметра никак не влияют на реальное использование оперативной памяти, а реальное резервирование происходит только для VM с выключенным балунингом.

Для PVE CT Параметр Memory означает сколько максимум контейнер сможет выделить оперативки, но не сколько резервируется под контейнер из общего пула

Это значит, что из вашей таблицы опмимум 21.75 не будет занят и 10 сервисов вполне нормально будут работать на 8-10 ГБ оперативки, проблемы будут только в момент, когда все сервисы одновременно начинают использовать ресурсы по полной.

16 ГБ для этой конфигурации хватит с головой!

Например, моя самая “жирная” нода

RAM usage 23.26% (14.12 GiB of 60.73 GiB) крутит сейчас 26 сервисов

Список
root@pve-02:~# pct list | grep running
101        running                 abs                 
105        running                 frigate             
111        running                 immich              
112        running                 share-note          
119        running                 esphome             
121        running                 linkwarden          
122        running                 ost                 
125        running                 ols                 
126        running                 netbox              
131        running                 semaphore           
134        running                 traefik-pve-02      
135        running                 forgejo             
140        running                 homepage            
145        running                 forgejo-runner-2    
146        running                 adguard             
148        running                 torrserver          
149        running                 komodo              
152        running                 pulse               
156        running                 komodo-node         
159        running                 guacamole           
161        running                 certbot             
163        running                 openbao-pve-02      
165        running                 wiremock            
174        running                 palmr               
176        running                 test-truenas-lvm    
177        running                 scrutiny            
180        running                 karakeep 

Поэтому, в рамках хомлабы можно выделять хоть по 32 гб всем сервисам и будет работать нормально, но если какой-то сервис сожрет всю оперативку, то остальные начнут получать ООМ.

Тут я бы исходил из реального использования: смотрите по факту сколько используется ресурсов на PVE ноде (9 версия добавила еще графиков) и если понимаем, что ресурсов не хватает, то думаем над масштабированием.

Из тех сервисов, что у вас в списке

  • Immich - у меня выделено 8ГБ и 4 ядра для того, чтобы быстро импорт больших коллекций проходил. Фактически в фоне до 1ГБ
  • Linkwarden - сейчас 3ГБ занято, тоже увеличил до 8. Он в процессе добавления ссылок очень активно использует ресурсы. Я в процессе поиска альтернатив
  • adguardhome - лимит 1Гб спользуется 64МБ
  • PBS - выделял 4Гб на виртуалке, сейчас 2ГБ в LXC контейнере, но используется в районе 512МБ
  • Nginx Proxy Manager - выделено 2ГБ используется 670МБ
3 лайка