Udostępnij przez


Implementowanie kontrolek zasobów dla kontenerów systemu Windows

Dotyczy: Windows Server 2025, Windows Server 2022, Windows Server 2019

Istnieje kilka mechanizmów kontroli zasobów, które można zaimplementować w poszczególnych kontenerach i poszczególnych zasobach. Domyślnie kontenery podlegają typowemu zarządzaniu zasobami w systemie Windows, które generalnie opiera się na zasadzie sprawiedliwego podziału, ale poprzez konfigurację tych ustawień, deweloper lub administrator może ograniczyć lub wpłynąć na użycie zasobów. Zasoby, które można kontrolować, obejmują: procesor/procesor, pamięć/pamięć RAM, dysk/magazyn i sieć/przepływność.

Kontenery systemu Windows wykorzystują obiekty zadań do grupowania i śledzenia procesów skojarzonych z każdym kontenerem. Kontrolki zasobów są implementowane w obiekcie zadania nadrzędnego skojarzonego z kontenerem.

W przypadku izolacji Hyper-V, kontrole zasobów są automatycznie stosowane zarówno do maszyny wirtualnej, jak i do obiektu zadania kontenera uruchamianego wewnątrz tej maszyny wirtualnej. Zapewnia to, że nawet jeśli proces uruchomiony w kontenerze ominie lub ucieknie spod kontroli obiektu zadania, maszyna wirtualna nie pozwoli na przekroczenie zdefiniowanych limitów zasobów.

Zasoby

Dla każdego zasobu ta sekcja zawiera mapowanie między interfejsem wiersza polecenia platformy Docker, jako przykład zastosowania kontroli zasobów (która może być skonfigurowana przez orkiestratora lub inne narzędzia), a odpowiednim interfejsem API usługi obliczeniowej hosta Windows (HCS). Opisuje również ogólne zasady, według których system Windows realizuje kontrolę zasobów (należy pamiętać, że ten opis jest na wysokim poziomie i że podstawowa implementacja może ulec zmianie).

Pamięć

Zasób Lokalizacja
Interfejs Dockera --pamięć
Interfejs HCS MemoryMaximumInMB
Wspólne jądro JOB_OBJECT_LIMIT_JOB_MEMORY (ograniczenie pamięci zadania)
izolacja Hyper-V Pamięć maszyny wirtualnej

Notatka

Dla izolacji Hyper-V w systemie Windows Server 2016, podczas korzystania z limitu pamięci, kontener początkowo przydzieli określoną ilość pamięci, a następnie zacznie zwracać ją do hosta kontenera. W nowszych wersjach systemu Windows Server (1709 lub nowszych) ten proces został zoptymalizowany.

Procesor (liczba)

Zasób Lokalizacja
Interfejs Dockera --Procesorów
Interfejs HCS ProcessorCount
Wspólne jądro Symulowane za pomocą JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
izolacja Hyper-V Liczba uwidocznionych procesorów wirtualnych

Procesor CPU (procent)

Zasób Lokalizacja
Interfejs Dockera --cpu-percent (procent CPU)
Interfejs HCS ProcessorMaximum
Wspólne jądro Ograniczenie użycia CPU w JOB_OBJECT do twardego limitu (JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP)
izolacja Hyper-V Limity funkcji Hypervisor na procesorach wirtualnych

Procesor (przydziały)

Zasób Lokalizacja
Interfejs Dockera --cpu-shares
Interfejs HCS WagaProcesora
Wspólne jądro JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED (sterowanie szybkością CPU na podstawie wagi)
izolacja Hyper-V Wagi procesorów wirtualnych dla Hypervisora

Przechowywanie (obraz)

Zasób Lokalizacja
Interfejs Dockera --io-maxbandwidth/--io-maxiops
Interfejs HCS StorageIOPSMaximum i StorageBandwidthMaximum
Wspólne jądro JOBOBJECT_IO_RATE_CONTROL_INFORMATION
izolacja Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Przechowywanie (woluminy)

Zasób Lokalizacja
Interfejs Dockera --storage-opt size=
Interfejs HCS RozmiarPiaskownicyMagazynowej
Wspólne jądro JOBOBJECT_IO_RATE_CONTROL_INFORMATION
izolacja Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Dodatkowe uwagi lub szczegóły

Wymagania dotyczące pamięci

Kontenery systemu Windows uruchamiają pewien proces systemowy w każdym kontenerze zazwyczaj te, które zapewniają funkcjonalność poszczególnych kontenerów, takich jak zarządzanie użytkownikami, sieć itp. i chociaż większość pamięci wymaganej przez te procesy jest współdzielona między kontenerami, limit pamięci musi być wystarczająco wysoki, aby na to pozwolić. Tabela znajduje się w dokumencie wymagań systemowych dla każdego typu obrazu podstawowego zarówno z, jak i bez izolacji Hyper-V.

Udostępnianie zasobów procesora (bez izolacji Hyper-V)

W przypadku korzystania z udziałów procesora w implementacji bazowej (jeśli nie jest używana separacja Hyper-V) konfiguruje się JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, w szczególności ustawiając flagę sterującą na JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED i zapewniając odpowiednią wagę. Prawidłowe zakresy wag obiektu zadania wynoszą od 1 do 9, z wartością domyślną 5, co charakteryzuje się niższą wiernością niż zakres wartości usług obliczeniowych hosta wynoszący od 1 do 10000. Na przykład waga udziału 7500 skutkowałaby wagą 7, a waga udziału 2500 wartością 2.