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.