Condividi tramite


Implementazione dei controlli delle risorse per i contenitori windows

Si applica a: Windows Server 2025, 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 in esecuzione sono soggetti a una tipica gestione delle risorse di Windows, che in generale è basata su fair-share; tuttavia, attraverso la configurazione di tali controlli, uno sviluppatore o amministratore 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 padre del processo associato al contenitore.

Nel caso dell'isolamento Hyper-V, i controlli delle risorse vengono applicati sia alla macchina virtuale che all'oggetto lavoro del contenitore in esecuzione all'interno della macchina virtuale. Questo avviene automaticamente e garantisce che, anche se un processo in esecuzione nel contenitore bypassasse o sfuggisse ai controlli dell'oggetto lavoro, la macchina virtuale assicurerà che non possa 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

Risorsa Ubicazione
Interfaccia Docker --memory
Interfaccia HCS MemoryMaximumInMB
Kernel condiviso JOB_OBJECT_LIMIT_JOB_MEMORY
isolamento Hyper-V Memoria della macchina virtuale

Nota

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

CPU (conteggio)

Risorsa Ubicazione
Interfaccia Docker --cpus
Interfaccia HCS ProcessorCount
Kernel condiviso Simulazione effettuata con JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
isolamento Hyper-V Numero di processori virtuali esposti

CPU (percento)

Risorsa Ubicazione
Interfaccia Docker --cpu-percent
Interfaccia HCS ProcessorMaximum
Kernel condiviso JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
isolamento Hyper-V Limiti dell'hypervisor sui processori virtuali

CPU (condivisioni)

Risorsa Ubicazione
Interfaccia Docker --cpu-shares
Interfaccia HCS ProcessorWeight
Kernel condiviso JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
isolamento Hyper-V Pesi dei processori virtuali hypervisor

Archiviazione (immagine)

Risorsa Ubicazione
Interfaccia Docker --io-maxbandwidth/--io-maxiops
Interfaccia HCS StorageIOPSMaximum e StorageBandwidthMaximum
Kernel condiviso JOBOBJECT_IO_RATE_CONTROL_INFORMATION
isolamento Hyper-V JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Archiviazione (volumi)

Risorsa Ubicazione
Interfaccia Docker --storage-opt size=
Interfaccia HCS StorageSandboxSize
Kernel condiviso JOBOBJECT_IO_RATE_CONTROL_INFORMATION
isolamento 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 è fornita una tabella per ogni tipo di immagine di base, con e senza isolamento Hyper-V.

Condivisioni CPU (senza isolamento Hyper-V)

Quando si usano le quote CPU, l'implementazione sottostante (quando non si utilizza l'isolamento Hyper-V) configura l'JOBOBJECT_CPU_RATE_CONTROL_INFORMATION, impostando specificamente il flag di controllo su JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED e fornendo un peso adeguato. I range di peso validi per l'oggetto attività sono compresi tra 1 e 9, con un valore predefinito di 5, che è inferiore alle fedeltà dei valori dei servizi di calcolo host, che vanno da 1 a 10000. Ad esempio, un peso di quota di 7500 risulterebbe in un peso di 7, oppure un peso di quota di 2500 risulterebbe in un valore di 2.