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.