Delen via


Resourcebesturingselementen implementeren voor Windows-containers

Van toepassing op: Windows Server 2025, Windows Server 2022, Windows Server 2019

Er zijn verschillende resourcebesturingselementen die per container en per resource kunnen worden geïmplementeerd. Containers die standaard worden uitgevoerd, zijn onderhevig aan typisch Windows-resourcebeheer, dat over het algemeen gebaseerd is op evenredige verdeling. Via de configuratie van deze beheerelementen kan een ontwikkelaar of beheerder echter het resourcegebruik beperken of beïnvloeden. Resources die kunnen worden beheerd zijn: CPU/processor, geheugen/RAM, schijf/opslag en netwerk/doorvoer.

Windows-containers maken gebruik van taakobjecten om processen te groeperen en bij te houden die aan elke container zijn gekoppeld. Resourcebesturingselementen worden geïmplementeerd op het oudertaakobject dat aan de container is gekoppeld.

In het geval dat Hyper-V isolatie wordt toegepast, worden resourcebesturingselementen zowel op de virtuele machine als op het taakobject van de container binnen de virtuele machine toegepast. Dit zorgt ervoor dat zelfs als een proces in de container de taakobjectcontroles omzeilt of ontsnapt, de virtuele machine kan garanderen dat het niet de gedefinieerde resourcebeperkingen overschrijdt.

Middelen

Voor elke resource biedt deze sectie een toewijzing tussen de Docker-opdrachtregelinterface als voorbeeld van hoe het resourcebeheer kan worden gebruikt (het kan worden geconfigureerd door een orchestrator of andere hulpprogramma's) voor de bijbehorende HCS-API (Windows Host Compute Service), evenals hoe het resourcebeheer is geïmplementeerd door Windows (houd er rekening mee dat deze beschrijving hoog niveau is en dat de onderliggende implementatie onderhevig is aan wijzigingen).

Geheugen

Hulpbron Plaats
Docker-interface --memory
HCS-interface MemoryMaximumInMB
Gedeelde kernel JOB_OBJECT_LIMIT_JOB_MEMORY
isolatie van Hyper-V Geheugen van virtuele machine

Notitie

Voor Hyper-V-isolatie in Windows Server 2016, wanneer u een geheugenlimiet gebruikt, zult u zien dat de container aanvankelijk het gelimiteerde aantal geheugen toewijst. Vervolgens begint deze het geheugen terug te geven aan de containerhost. In latere versies van Windows Server (1709 of hoger) is dit proces geoptimaliseerd.

CPU (aantal)

Hulpbron Locatie
Docker-interface --cpus
HCS-interface ProcessorCount-
Gedeelde kern Gesimuleerd met JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
isolatie van Hyper-V Aantal virtuele processors dat beschikbaar is gesteld

CPU (procent)

Hulpbron Plaats
Docker-interface --cpu-percentage
HCS-interface ProcessorMaximum-
Gedeelde kernel JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
isolatie van Hyper-V Hypervisorlimieten voor virtuele processors

CPU (shares)

Hulpbron Plaats
Docker-interface --cpu-shares
HCS-interface ProcessorGewicht
Gedeelde kernel JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
isolatie van Hyper-V Gewichten van hypervisor-virtuele processors

Opslag (afbeelding)

Hulpbron Plaats
Docker-interface --io-maxbandwidth/--io-maxiops
HCS-interface OpslagIOPSMaximaal en OpslagBandbreedteMaximaal
Gedeelde kern JOBOBJECT_IO_RATE_CONTROL_INFORMATION
isolatie van Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Opslag (volumes)

Hulpbron Plaats
Docker-interface --storage-opt size=
HCS-interface StorageSandboxSize
Gedeelde kernel JOBOBJECT_IO_RATE_CONTROL_INFORMATION
isolatie van Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Aanvullende notities of bijzonderheden

Geheugeneisen

Windows-containers voeren een systeemproces uit in elke container, meestal de containers die functionaliteit per container bieden, zoals gebruikersbeheer, netwerken, enzovoort... en hoewel veel van het geheugen dat door deze processen is vereist, wordt gedeeld tussen containers, moet de geheugenlimiet hoog genoeg zijn om ze toe te staan. Er wordt een tabel verstrekt in het systeemvereisten document voor elk basisonbeeld type, met of zonder Hyper-V isolatie.

CPU-shares (zonder Hyper-V-isolatie)

Wanneer u CPU-shares gebruikt, configureert de onderliggende implementatie (wanneer u geen gebruik maakt van Hyper-V isolatie) de JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, en configureert specifiek de controlevlag naar JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED en stelt een passend gewicht in. De geldige gewichtsbereiken van het taakobject zijn 1 – 9, met een standaardwaarde van 5, wat van een lagere betrouwbaarheid is dan de host-rekenservicewaarden van 1 – 10000. Als voorbeeld zou een aandeelgewicht van 7500 resulteren in een gewicht van 7 of een aandeelgewicht van 2500 zou resulteren in een waarde van 2.