Condividi tramite


Implementazione dei controlli delle risorse per i contenitori windows

Si applica a: Windows Server 2022, Windows Server 2019

Esistono diversi controlli delle risorse che possono essere implementati per ogni contenitore e per ogni risorsa. Per impostazione predefinita, i contenitori eseguiti sono soggetti a una tipica gestione delle risorse di Windows, che in generale è basata su fair-share, ma anche se la configurazione di questi controlli può limitare o influenzare l'utilizzo delle risorse. Le risorse che possono essere controllate includono CPU/processore, memoria/RAM, disco/Archiviazione e rete/velocità effettiva.

I contenitori di Windows usano oggetti processo per raggruppare e tenere traccia dei processi associati a ogni contenitore. I controlli delle risorse vengono implementati nell'oggetto processo padre associato al contenitore.

Nel caso dei controlli delle risorse di isolamento Hyper-V vengono applicati sia alla macchina virtuale che all'oggetto processo del contenitore in esecuzione automaticamente all'interno della macchina virtuale, ciò garantisce che anche se un processo in esecuzione nel contenitore ignora o ignora gli oggetti processo controlla la macchina virtuale per assicurarsi che non sia stato in grado di superare i controlli delle risorse definiti.

Risorse

Per ogni risorsa in questa sezione viene fornito un mapping tra l'interfaccia della riga di comando Docker come esempio di come può essere usato il controllo delle risorse (potrebbe essere configurato da un agente di orchestrazione o da altri strumenti) all'API HCS (Host Compute Service) di Windows corrispondente, nonché il modo in cui il controllo delle risorse è stato implementato da Windows (si noti che questa descrizione è di alto livello e che l'implementazione sottostante è soggetta a modifiche).

Memoria

Conto risorse Ufficio
Interfaccia Docker --memory
Interfaccia HCS MemoryMaximumInMB
Kernel condiviso JOB_OBJECT_LIMIT_JOB_MEMORY
Isolamento di Hyper-V Memoria della macchina virtuale

Nota

Per l'isolamento Hyper-V in Windows Server 2016, quando si usa un limite di memoria, il contenitore alloca inizialmente la quantità limite di memoria e quindi si avvia per restituirla all'host contenitore. Le versioni successive di Windows Server (1709 o versioni successive) hanno ottimizzato questo processo.

Numero di CPU

Conto risorse Ufficio
Interfaccia Docker --cpus
Interfaccia HCS ProcessorCount
Kernel condiviso Simulato con JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
Isolamento di Hyper-V Numero di processori virtuali esposti

Percentuale CPU

Conto risorse Ufficio
Interfaccia Docker --cpu-percent
Interfaccia HCS ProcessorMaximum
Kernel condiviso JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
Isolamento di Hyper-V Limiti dell'hypervisor sui processori virtuali

CPU (condivisioni)

Conto risorse Ufficio
Interfaccia Docker --cpu-shares
Interfaccia HCS ProcessorWeight
Kernel condiviso JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
Isolamento di Hyper-V Pesi dei processori virtuali hypervisor

Archiviazione (immagine)

Conto risorse Ufficio
Interfaccia Docker --io-maxbandwidth/--io-maxiops
Interfaccia HCS StorageIOPSMaximum e StorageBandwidthMaximum
Kernel condiviso JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Isolamento di Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Archiviazione (volumi)

Conto risorse Ufficio
Interfaccia Docker --storage-opt size=
Interfaccia HCS StorageSandboxSize
Kernel condiviso JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Isolamento di Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Note o dettagli aggiuntivi

Requisiti di memoria

I contenitori di Windows eseguono un processo di sistema in ogni contenitore, in genere quelli che forniscono funzionalità per contenitore come la gestione degli utenti, la rete e così via... e mentre gran parte della memoria necessaria da questi processi è condivisa tra i contenitori, il limite di memoria deve essere sufficientemente elevato per consentirle. Nel documento dei requisiti di sistema viene fornita una tabella per ogni tipo di immagine di base e con e senza isolamento Hyper-V.

Condivisioni CPU (senza isolamento Hyper-V)

Quando si usa la CPU condivide l'implementazione sottostante (quando non si usa l'isolamento Hyper-V) configura l'JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, impostando in particolare il flag di controllo su JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BA edizione Standard D e fornendo un peso appropriato. Gli intervalli di peso validi dell'oggetto processo sono compresi tra 1 e 9 con un valore predefinito pari a 5, che è inferiore ai valori dei servizi di calcolo host pari a 1 - 10000. Ad esempio, un peso di quota pari a 7500 comporterebbe un peso pari a 7 o un peso di quota pari a 2500.