Freigeben über


Implementieren von Ressourcensteuerelementen für Windows-Container

Gilt für: Windows Server 2025, Windows Server 2022, Windows Server 2019

Es gibt mehrere Ressourcensteuerelemente, die pro Container und pro Ressource implementiert werden können. Standardmäßig unterliegen laufende Container der typischen Verwaltung von Windows-Ressourcen, die im Allgemeinen fair-anteilbasiert ist, aber durch Konfiguration dieser Steuerelemente kann ein Entwickler oder Administrator die Ressourcennutzung einschränken oder beeinflussen. Ressourcen, die gesteuert werden können: CPU/Prozessor, Arbeitsspeicher/RAM, Datenträger/Speicher und Netzwerk/Durchsatz.

Windows-Container verwenden Auftragsobjekte zum Gruppieren und Nachverfolgen von Prozessen, die den einzelnen Containern zugeordnet sind. Ressourcensteuerungen werden im übergeordneten Auftragsobjekt des Containers implementiert.

Im Fall der Hyper-V-Isolation werden die Ressourcensteuerelemente automatisch sowohl auf den virtuellen Computer als auch auf das Auftragsobjekt des Containers innerhalb des virtuellen Computers angewendet. Dies stellt sicher, dass selbst dann, wenn ein im Container ausgeführter Prozess die Steuerelemente des Auftragsobjekts umgeht, der virtuelle Computer dafür sorgen kann, dass die definierten Ressourcenbegrenzungen nicht überschritten werden.

Ressourcen

Für jede Ressource bietet dieser Abschnitt eine Zuordnung zwischen der Docker-Befehlszeilenschnittstelle als Beispiel dafür, wie das Ressourcensteuerelement verwendet werden kann (es kann von einem Orchestrator oder einem anderen Tool konfiguriert werden) der entsprechenden Windows Host Compute Service (HCS)-API sowie im Allgemeinen, wie die Ressourcensteuerung von Windows implementiert wurde (beachten Sie, dass diese Beschreibung auf hoher Ebene ist und dass die zugrunde liegende Implementierung geändert werden kann).

Gedächtnis

Ressource Ort
Docker-Schnittstelle --memory
HCS-Schnittstelle MemoryMaximumInMB
Gemeinsam genutzter Kernel JOB_OBJECT_LIMIT_JOB_MEMORY
Hyper-V-Isolation Arbeitsspeicher virtueller Maschinen

Anmerkung

Bei der Hyper-V-Isolation in Windows Server 2016 weist der Container bei Verwendung einer Speicherbegrenzung zunächst die begrenzte Speichermenge zu und beginnt dann, sie an den Containerhost zurückzugeben. Spätere Versionen von Windows Server (1709 oder höher) haben diesen Prozess optimiert.

CPU (Anzahl)

Ressource Ort
Docker-Schnittstelle --cpus
HCS-Schnittstelle Prozessoranzahl
Gemeinsam genutzter Kernel Simuliert mit JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP*
Hyper-V-Isolation Anzahl der verfügbar gemachten virtuellen Prozessoren

CPU (Prozent)

Ressource Ort
Docker-Schnittstelle --cpu-percent
HCS-Schnittstelle ProcessorMaximum
Gemeinsam genutzter Kernel JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP
Hyper-V-Isolation Hypervisorbeschränkungen für virtuelle Prozessoren

CPU (Freigaben)

Ressource Ort
Docker-Schnittstelle --cpu-shares
HCS-Schnittstelle Prozessorgewicht
Gemeinsam genutzter Kernel JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED
Hyper-V-Isolation Gewichtungen virtueller Hypervisorprozessoren

Speicher (Bild)

Ressource Ort
Docker-Schnittstelle --io-maxbandwidth/--io-maxiops
HCS-Schnittstelle StorageIOPSMaximum and StorageBandwidthMaximum
Gemeinsam genutzter Kernel JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V-Isolation JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Speicher (Volumes)

Ressource Ort
Docker-Schnittstelle --storage-opt size=
HCS-Schnittstelle StorageSandboxSize
Gemeinsamer Kernel JOBOBJECT_IO_RATE_CONTROL_INFORMATION
Hyper-V-Isolation JOBOBJECT_IO_RATE_CONTROL_INFORMATION

Weitere Hinweise oder Details

Speicheranforderungen

Windows-Container führen in jedem Container in der Regel einen Systemprozess aus, der funktionen pro Container wie Benutzerverwaltung, Netzwerk usw. bereitstellt... und während ein Großteil des von diesen Prozessen benötigten Arbeitsspeichers zwischen Containern geteilt wird, muss die Speicherbegrenzung hoch genug sein, um ihren Betrieb zu ermöglichen. Eine Tabelle für jeden Basisimagetyp sowie mit und ohne Hyper-V-Isolation wird im Dokument zu den Systemanforderungen bereitgestellt.

CPU-Anteile (ohne Hyper-V-Isolierung)

Bei Nutzung von CPU-Freigaben wird JOBOBJECT_CPU_RATE_CONTROL_INFORMATION von der zugrunde liegenden Implementierung konfiguriert (wenn keine Hyper-V-Isolation verwendet wird). Insbesondere wird das Steuerungsflag auf „JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED“ gesetzt und eine entsprechende Gewichtung angegeben. Die gültigen Gewichtsbereiche des Jobobjekts liegen bei 1 bis 9 mit einem Standardwert von 5, was eine geringere Feinheit als die Werte der Host-Computerdienste von 1 bis 10.000 bedeutet. Als Beispiele würde ein Anteilsgewicht von 7500 zu einem Gewicht von 7 führen oder ein Anteilsgewicht von 2500 zu einem Wert von 2.