Реализация элементов управления ресурсами для контейнеров Windows
Область применения: Windows Server 2022, Windows Server 2019
Существует несколько элементов управления ресурсами, которые можно реализовать на основе каждого контейнера и каждого ресурса. По умолчанию запуск контейнеров зависит от типичного управления ресурсами Windows, который обычно является справедливым, но хотя конфигурация этих элементов управления разработчиком или администратором может ограничить или повлиять на использование ресурсов. К ресурсам, которым можно управлять, относятся ЦП/процессор, память/ОЗУ, диск/служба хранилища и пропускная способность.
Контейнеры Windows используют объекты заданий для группировки и отслеживания процессов, связанных с каждым контейнером. Элементы управления ресурсами реализуются в родительском объекте задания, связанном с контейнером.
В случае элементов управления изоляцией Hyper-V применяются как к виртуальной машине, так и к объекту задания контейнера, работающему внутри виртуальной машины, это гарантирует, что даже если процесс, запущенный в контейнере, обошел или избежал объекты задания, элементы управления виртуальной машиной не смогут превышать определенные элементы управления ресурсами.
Ресурсы
Для каждого ресурса в этом разделе представлено сопоставление между интерфейсом командной строки Docker в качестве примера использования элемента управления ресурсами (оно может быть настроено оркестратором или другим инструментом) с соответствующим API вычислительной службы узлов Windows (HCS), а также как правило, как управление ресурсами реализовано Windows (обратите внимание, что это описание является высоким уровнем и что базовая реализация подлежит изменению).
Память
Ресурс | Расположение |
---|---|
Интерфейс Docker | --memory |
Интерфейс HCS | MemoryMaximumInMB |
Общее ядро | JOB_OBJECT_LIMIT_JOB_MEMORY |
Изоляция Hyper-V | Память виртуальной машины |
Примечание.
В случае изоляции Hyper-V в Windows Server 2016 при использовании ограничения памяти вы увидите, что контейнер сначала выделяет ограниченный объем памяти, а затем возвращает его узлу контейнера. Этот процесс оптимизирован в более поздних версиях Windows Server (начиная с версии 1709).
ЦП (число)
Ресурс | Расположение |
---|---|
Интерфейс Docker | --cpus |
Интерфейс HCS | ProcessorCount |
Общее ядро | Имитация с помощью JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP* |
Изоляция Hyper-V | Количество предоставляемых виртуальных процессоров |
Загрузка ЦП (в процентах)
Ресурс | Расположение |
---|---|
Интерфейс Docker | --cpu-percent |
Интерфейс HCS | ProcessorMaximum |
Общее ядро | JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP |
Изоляция Hyper-V | Ограничения гипервизора на виртуальных процессорах |
ЦП (общие ресурсы)
Ресурс | Расположение |
---|---|
Интерфейс Docker | --cpu-shares |
Интерфейс HCS | ProcessorWeight |
Общее ядро | JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED |
Изоляция Hyper-V | Весы виртуальных процессоров гипервизора |
Хранилище (образ)
Ресурс | Расположение |
---|---|
Интерфейс Docker | --io-maxbandwidth/--io-maxiops |
Интерфейс HCS | StorageIOPSMaximum и StorageBandwidthMaximum |
Общее ядро | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Изоляция Hyper-V | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Хранилище (тома)
Ресурс | Расположение |
---|---|
Интерфейс Docker | --storage-opt size= |
Интерфейс HCS | StorageSandboxSize |
Общее ядро | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Изоляция Hyper-V | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Дополнительные заметки или сведения
Требования к памяти
Контейнеры Windows выполняют некоторый системный процесс в каждом контейнере обычно те, которые предоставляют функциональные возможности для каждого контейнера, такие как управление пользователями, сеть и т. д. и в то время как большая часть памяти, требуемая этими процессами, совместно используется между контейнерами, ограничение памяти должно быть достаточно высоким, чтобы позволить им. Таблица представлена в документе о требованиях к системе для каждого типа базового образа и без изоляции Hyper-V.
Общие ресурсы ЦП (без изоляции Hyper-V)
При использовании ЦП используется базовая реализация (при не использовании изоляции Hyper-V) настраивает JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, в частности, устанавливая флаг управления на JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED и предоставляя соответствующий вес. Допустимые диапазоны весов объекта задания : 1 – 9 с значением по умолчанию 5, что меньше точности, чем значения служб вычислений узла 1 – 10000. В качестве примеров вес общей доли 7500 приведет к тому, что вес 7 или доля 2500 приведет к значению 2.