Dela via


Implementera resurskontroller för Windows-containrar

Gäller för: Windows Server 2025, Windows Server 2022, Windows Server 2019

Det finns flera resurskontroller som kan implementeras per container och per resurs. Som standard är körande containrar föremål för typisk Windows-resurshantering, som i allmänhet innebär rättvist fördelad användning av resurser, men genom att konfigurera dessa kontroller kan en utvecklare eller administratör begränsa eller påverka resursanvändningen. Resurser som kan styras är: CPU/processor, minne/RAM, disk/lagring och nätverk/dataflöde.

Windows-containrar använder jobbobjekt för att gruppera och spåra processer som är associerade med varje container. Resurskontroller implementeras på det överordnade jobbobjektet som är associerat med containern.

När det gäller Hyper-V-isolering tillämpas resurskontroller automatiskt både på den virtuella datorn och på jobbobjektet för containern som körs i den virtuella datorn. Detta säkerställer att även om en process som körs i containern kringgår kontrollerna, kan den virtuella datorn inte överskrida de definierade resurskontrollerna.

Resurser

För varje resurs innehåller det här avsnittet en mappning mellan Docker-kommandoradsgränssnittet som ett exempel på hur resurskontrollen kan användas (den kan konfigureras av en orkestrerare eller andra verktyg) till motsvarande API för Windows-värdberäkningstjänsten (HCS) samt generellt hur resurskontrollen har implementerats av Windows (observera att den här beskrivningen är på hög nivå och att den underliggande implementeringen kan komma att ändras).

Minne

Resurs Plats
Docker-gränssnitt --memory
HCS-gränssnitt MemoryMaximumInMB
Delad kärna JOB_OBJECT_LIMIT_JOB_MEMORY
Hyper-V isolering Minne för virtuell dator

Not

När du använder ett minnestak för Hyper-V-isolering i Windows Server 2016, ser du att containern först allokerar en viss mängd minne som anges av minnestaket och därefter börjar returnera det till värdmaskinen. Senare versioner av Windows Server (1709 eller senare) har optimerat den här processen.

CPU (antal)

Resurs Plats
Docker-gränssnitt --cpus
HCS-gränssnitt Processorantal
Delad kernel Simulerad med JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
Hyper-V isolering Antal virtuella processorer som exponeras

CPU (procent)

Resurs Plats
Docker-gränssnitt --cpu-percent
HCS-gränssnitt ProcessorMaximalt
Delad kärna JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
Hyper-V isolering Hypervisor-gränser för virtuella processorer

CPU (resurser)

Resurs Plats
Docker-gränssnitt --cpu-shares
HCS-gränssnitt ProcessorWeight
Delad kernel JOBB_OBJEKT_CPU_HASTIGHET_KONTROLL_VIKTBASERAD
Hyper-V isolering Vikter för virtuella Hypervisor-processorer

Lagring (bild)

Resurs Plats
Docker-gränssnitt --io-maxbandwidth/--io-maxiops
HCS-gränssnitt StorageIOPSMaximum och StorageBandwidthMaximum
Delad kärna JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V isolering JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Lagring (volymer)

Resurs Plats
Docker-gränssnitt --storage-opt size=
HCS-gränssnitt StorageSandboxSize
Delad kärna JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V isolering JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Ytterligare anteckningar eller information

Minneskrav

Windows-containrar kör en viss systemprocess i varje container, vanligtvis de som tillhandahåller funktioner per container, till exempel användarhantering, nätverk osv. och även om mycket av det minne som krävs av dessa processer delas mellan containrar måste minnestaket vara tillräckligt högt för att tillåta dem. En tabell finns i dokumentet för systemkrav för varje typ av basavbildning, både med och utan Hyper-V-isolering.

CPU-resurser (utan Hyper-V isolering)

När du använder CPU-andelar konfigurerar den underliggande implementationen (när du inte använder Hyper-V isolering) JOBOBJECT_CPU_RATE_CONTROL_INFORMATIONoch anger specifikt kontrollflaggan till JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED och tilldelar en lämplig vikt. Jobbobjektets giltiga viktsintervall är 1–9 med standardvärde 5, vilket är lägre noggrannhet än de värden för beräkningstjänster som sträcker sig från 1 till 10 000. Som exempel skulle en aktievikt på 7500 resultera i en vikt på 7 eller en aktievikt på 2500 skulle resultera i ett värde på 2.