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.