8

Управление памятью контейнеров

Павел Емельянов

Для обеспечения одновременной работы контейнеров требуется следить и контроллировать расход памяти. В современных версиях ядер Linux существует механизм под названием memcgroup – это подсистема, предоставляющая следующие возможности.

  1. Подсчет памяти, потребляемой группой процессов
  2. Ограничение объема этой памяти
  3. Сканирование и отъём (reclaim) памяти заранее, до достижения предела
  4. Возможности по временному хранению отобранной памяти

Требуется исследовать возможность по эффективному (см. ниже) управлению памятью с использованием описанных интерфейсов. От модели управления требуется:

  1. Обеспечивать честность распределения памяти в случае, когда суммарного объёма её на сервере не хватает для всех контейнеров
  2. Позволять отдельным контейнерам временно потреблять больше памяти, чем другим
  3. Учитывать возможное “старение” памяти”
  4. Использовать свободную память сервера (если есть) для временного хранения отобранной памяти