Implementieren von Ressourcensteuerungen für Windows-Container
Gilt für: Windows Server 2022, Windows Server 2019
Pro Container und pro Ressource können diverse Steuerungen implementiert werden. Standardmäßig unterliegen ausgeführte Container einer typischen Windows-Ressourcenverwaltung, die im Allgemeinen auf einer gleichberechtigten Verteilung basiert. Ein Entwickler oder Administrator kann die Ressourcennutzung jedoch durch die Konfiguration der einzelnen Steuerungselemente begrenzen oder beeinflussen. Zu den steuerbaren Ressourcen gehören: CPU/Prozessor, Arbeitsspeicher/RAM, Datenträger/Speicher und Netzwerk/Durchsatz.
Windows-Container nutzen Auftragsobjekte zum Gruppieren und Nachverfolgen der Prozesse, die jedem Container zugeordnet sind. Steuerungselemente für Ressourcen werden für das dem Container zugeordnete übergeordnete Auftragsobjekt implementiert.
Im Fall der Hyper-V-Isolation werden die Ressourcensteuerelemente automatisch sowohl auf den virtuellen Computer als auch auf das Auftragsobjekt des Containers innerhalb der virtuellen Maschine 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
Dieser Abschnitt enthält für jede Ressource eine Zuordnung zwischen der Docker-Befehlszeilenschnittstelle (als Beispiel für die Verwendung der Ressourcensteuerung, die von einem Orchestrator oder per Tool konfiguriert sein kann) und der entsprechenden Windows Host Compute Service (HCS)-API. Zudem wird allgemein angegeben, wie die Ressourcensteuerung von Windows implementiert wurde (bitte beachten Sie, dass diese Beschreibung auf einer höheren Ebene erfolgt, deren zugrundeliegende Implementierung sich ändern kann).
Arbeitsspeicher
Resource | Standort |
---|---|
Docker-Schnittstelle | --memory |
HCS-Schnittstelle | MemoryMaximumInMB |
Gemeinsamer Kernel | JOB_OBJECT_LIMIT_JOB_MEMORY |
Hyper-V-Isolierung | Arbeitsspeicher des virtuellen Computers |
Hinweis
Bei Hyper-V-Isolation in Windows Server 2016 werden Sie bei Verwendung einer Memory-Cap bemerken, dass der Container den durch die Cap festgelegten Speicher zunächst zuweist und dann beginnt, ihn an den Containerhost zurückzugeben. In späteren Versionen von Windows Server (1709 oder höher) wurde dieser Prozess optimiert.
CPU (Anzahl)
Resource | Standort |
---|---|
Docker-Schnittstelle | --cpus |
HCS-Schnittstelle | ProcessorCount |
Gemeinsamer Kernel | Simuliert mit JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP* |
Hyper-V-Isolierung | Anzahl verfügbarer virtueller Prozessoren |
CPU (Prozent)
Resource | Standort |
---|---|
Docker-Schnittstelle | --cpu-percent |
HCS-Schnittstelle | ProcessorMaximum |
Gemeinsamer Kernel | JOB_OBJECT_CPU_RATE_CONTROL_HARD_CAP |
Hyper-V-Isolierung | Hypervisor-Limits für virtuelle Prozessoren |
CPU (Freigaben)
Resource | Standort |
---|---|
Docker-Schnittstelle | --cpu-shares |
HCS-Schnittstelle | ProcessorWeight |
Gemeinsamer Kernel | JOB_OBJECT_CPU_RATE_CONTROL_WEIGHT_BASED |
Hyper-V-Isolierung | Hypervisor-Gewichtungen für virtuelle Prozessoren |
Speicher (Image)
Resource | Standort |
---|---|
Docker-Schnittstelle | --io-maxbandwidth/--io-maxiops |
HCS-Schnittstelle | StorageIOPSMaximum und StorageBandwidthMaximum |
Gemeinsamer Kernel | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Hyper-V-Isolierung | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Speicher (Volumes)
Resource | Standort |
---|---|
Docker-Schnittstelle | --storage-opt size= |
HCS-Schnittstelle | StorageSandboxSize |
Gemeinsamer Kernel | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Hyper-V-Isolierung | JOBOBJECT_IO_RATE_CONTROL_INFORMATION |
Zusätzliche Hinweise oder Details
Speicheranforderungen
Windows-Container führen in jedem Container einige Systemprozesse aus, typischerweise solche, die Funktionalität pro Container bereitstellen wie beispielsweise Benutzerverwaltung, Networking usw. Und da ein großer Teil des von diesen Prozessen benötigten Speichers unter Containern geteilt wird, muss die Speicherkapazität hoch genug sein, um die Prozessausführung zu ermöglichen. Eine Tabelle für jeden Basisimagetyp mit und ohne Hyper-V-Isolation finden Sie im Dokument Systemanforderungen.
CPU-Freigaben (ohne Hyper-V-Isolation)
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 Gewichtungen für das Auftragsobjekt sind die Werte 1 bis 9 mit dem Standardwert 5, was eine geringere Genauigkeit bedeutet als die HCS-Werte 1 bis 10000. Beispiel: Eine Freigabegewichtung 7500 würde eine Gewichtung 7 und eine Freigabegewichtung 2500 einen Wert 2 ergeben.