Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Steuerung des Prozessorzustands für Ihre Amazon EC2 AL2-Instance
C-states steuern die Ruhephasen, in die ein Core wechseln kann, wenn er sich im Leerlauf befindet. C-states sind nummeriert, beginnend mit C0 (der flachste Zustand, in dem der Kern vollständig wach ist und Befehle ausführt) und gehen bis C6 (der tiefste Ruhezustand, in dem ein Kern ausgeschaltet ist).
P-states steuern Sie die gewünschte Leistung (in CPU-Frequenz) von einem Kern aus. P-states sind von P0 (der höchsten Leistungseinstellung, bei der der Kern die Intel Turbo Boost-Technologie verwenden darf, um die Frequenz nach Möglichkeit zu erhöhen) nummeriert und reichen von P1 (der Einstellung, die P-state die maximale Grundfrequenz anfordert) bis P15 (die niedrigste mögliche Frequenz).
Möglicherweise möchten Sie die C-state oder P-state -Einstellungen ändern, um die Konsistenz der Prozessorleistung zu erhöhen, die Latenz zu reduzieren oder Ihre Instance für eine bestimmte Arbeitslast zu optimieren. Die Standardeinstellungen C-state und die P-state Einstellungen bieten maximale Leistung, was für die meisten Workloads optimal ist. Wenn Ihre Anwendung jedoch von einer geringeren Latenz auf Kosten höherer Single- oder Dual-Core-Frequenzen oder von einer gleichbleibenden Leistung bei niedrigeren Frequenzen im Gegensatz zu Burst-Turbo-Boost-Frequenzen profitieren würde, sollten Sie erwägen, mit den C-state P-state ODER-Einstellungen zu experimentieren, die für diese Instances verfügbar sind.
Informationen zu Amazon EC2-Instance-Typen, mit denen das Betriebssystem den Prozessor C-states steuern kann P-states, finden Sie im Amazon EC2-Benutzerhandbuch unter Prozessor-Zustandskontrolle für Ihre Amazon EC2-Instance.
In den folgenden Abschnitten werden die unterschiedlichen Prozessorstatuskonfigurationen und die Überwachung der Auswirkungen Ihrer Konfiguration beschrieben. Diese Verfahren wurden für Amazon Linux geschrieben und gelten auch für Amazon Linux. Sie funktionieren jedoch möglicherweise auch für andere Linux-Distributionen mit einer Linux-Kernel-Version von 3.9 oder neuer.
Anmerkung
Bei den Beispielen auf dieser Seite wurde Folgendes verwendet:
-
Das turbostat Programm zur Anzeige von Prozessorfrequenz und C-state Informationen. Das turbostat-Dienstprogramm ist standardmäßig unter Amazon Linux verfügbar.
-
Der stress-Befehl simuliert eine Workload. Um stress zu installieren, aktivieren Sie zuerst das EPEL-Repository, indem Siesudo amazon-linux-extras install epel und dann sudo yum install -y stress ausführen.
Wenn die Ausgabe die C-state Informationen nicht anzeigt, schließen Sie die --debug Option in den Befehl ein (sudo turbostat --debug
stress <options>).
Inhalt
Höchste Performance mit maximaler Turbo Boost-Frequenz
Dies ist die Standardkonfiguration zum Steuern des Prozessorzustands für das Amazon Linux AMI und wird für die meisten Workloads empfohlen. Diese Konfiguration bietet die höchste Performance mit geringerer Variabilität. Wenn für inaktive Cores „tiefere“ Ruhezustände zugelassen werden, ist der thermische Spielraum vorhanden, der erforderlich ist, damit Single- oder Dual-Core-Prozesse ihr maximales Turbo Boost-Potenzial erreichen können.
Das folgende Beispiel enthält eine Instance vom Typ c4.8xlarge mit zwei aktiven Cores, die ihre maximale Turbo Boost-Prozessorfrequenz erreichen.
[ec2-user ~]$sudo turbostat stress -c 2 -t 10stress: info: [30680] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [30680] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.54 3.44 2.90 0 9.18 0.00 85.28 0.00 0.00 0.00 0.00 0.00 94.04 32.70 54.18 0.00 0 0 0 0.12 3.26 2.90 0 3.61 0.00 96.27 0.00 0.00 0.00 0.00 0.00 48.12 18.88 26.02 0.00 0 0 18 0.12 3.26 2.90 0 3.61 0 1 1 0.12 3.26 2.90 0 4.11 0.00 95.77 0.00 0 1 19 0.13 3.27 2.90 0 4.11 0 2 2 0.13 3.28 2.90 0 4.45 0.00 95.42 0.00 0 2 20 0.11 3.27 2.90 0 4.47 0 3 3 0.05 3.42 2.90 0 99.91 0.00 0.05 0.00 0 3 21 97.843.452.90 0 2.11 ... 1 1 10 0.06 3.33 2.90 0 99.88 0.01 0.06 0.00 1 1 28 97.613.442.90 0 2.32 ... 10.002556 sec
In diesem Beispiel werden die vCPUs 21 und 28 mit der maximalen Turbo Boost-Frequenz ausgeführt, da sich die anderen Cores im C6 Ruhezustand befinden, um Leistung zu sparen und für die aktiven Cores den leistungsbezogenen und thermischen Spielraum zu erhöhen. Die vCPUs 3 und 10 (die jeweils einen Prozessorkern mit den vCPUs 21 und 28 gemeinsam nutzen) befinden sich im C1 Zustand und warten auf Anweisungen.
Im folgenden Beispiel sind alle 18 Cores aktiv, sodass kein Spielraum für die maximale Turbo Boost-Frequenz vorhanden ist, aber alle Cores werden mit der Geschwindigkeit 3,2 GHz vom Typ „Turbo Boost für alle Cores“ ausgeführt.
[ec2-user ~]$sudo turbostat stress -c 36 -t 10stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd stress: info: [30685] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 99.27 3.20 2.90 0 0.26 0.00 0.47 0.00 0.00 0.00 0.00 0.00 228.59 31.33 199.26 0.00 0 0 0 99.08 3.20 2.90 0 0.27 0.01 0.64 0.00 0.00 0.00 0.00 0.00 114.69 18.55 99.32 0.00 0 0 18 98.74 3.20 2.90 0 0.62 0 1 1 99.14 3.20 2.90 0 0.09 0.00 0.76 0.00 0 1 19 98.75 3.20 2.90 0 0.49 0 2 2 99.07 3.20 2.90 0 0.10 0.02 0.81 0.00 0 2 20 98.73 3.20 2.90 0 0.44 0 3 3 99.02 3.20 2.90 0 0.24 0.00 0.74 0.00 0 3 21 99.13 3.20 2.90 0 0.13 0 4 4 99.26 3.20 2.90 0 0.09 0.00 0.65 0.00 0 4 22 98.68 3.20 2.90 0 0.67 0 5 5 99.19 3.20 2.90 0 0.08 0.00 0.73 0.00 0 5 23 98.58 3.20 2.90 0 0.69 0 6 6 99.01 3.20 2.90 0 0.11 0.00 0.89 0.00 0 6 24 98.72 3.20 2.90 0 0.39 ...
Hohe Leistung und niedrige Latenz durch tiefere Begrenzung C-states
C-states steuern Sie die Schlafstufen, in die ein Core gelangen kann, wenn er inaktiv ist. Möglicherweise möchten Sie Ihr System C-states auf Latenz und Leistung abstimmen. Das Versetzen von Cores in den Ruhezustand benötigt Zeit. Und auch wenn ein Core im Ruhezustand mehr Spielraum zur Nutzung einer höheren Frequenz durch einen anderen Core zulässt, dauert es auch wieder eine gewisse Zeit, bis der Core aus dem Ruhezustand erwacht und Arbeitsschritte ausführen kann. Falls sich beispielsweise ein Core, der für die Verarbeitung von Netzwerkpaketunterbrechungen zugewiesen ist, im Ruhezustand befindet, kann es bei der Verarbeitung der Unterbrechung zu einer Verzögerung kommen. Sie können das System so konfigurieren C-states, dass es nicht tiefer verwendet wird. Dadurch wird die Reaktionslatenz des Prozessors reduziert, aber das wiederum verringert auch den Spielraum, der anderen Kernen für den Turbo-Boost zur Verfügung steht.
Ein häufiges Szenario zum Deaktivieren von tieferen Ruhezuständen ist die Nutzung einer Redis-Datenbankanwendung, bei der die Datenbank im Systemspeicher gespeichert wird, um für Abfragen eine möglichst geringe Reaktionszeit zu erzielen.
Um tiefere Schlafzustände auf AL2 zu begrenzen
-
Öffnen Sie die Datei
/etc/default/grubmit einem Editor Ihrer Wahl.[ec2-user ~]$sudo vim /etc/default/grub -
Bearbeiten Sie die
GRUB_CMDLINE_LINUX_DEFAULTZeile und fügen Sie dieprocessor.max_cstate=1Optionenintel_idle.max_cstate=1und hinzu, um sieC1als tiefste Zeile C-state für Kerne im Leerlauf festzulegen.GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0Die
intel_idle.max_cstate=1Option konfiguriert das C-state Limit für Intel-based Instanzen, und dieprocessor.max_cstate=1Option konfiguriert das C-state Limit für Instanzen. AMD-based Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen. -
Speichern Sie die Datei und beenden Sie den Editor.
-
Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:
[ec2-user ~]$sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.
[ec2-user ~]$sudo reboot
So begrenzen Sie tiefere Ruhezustände für Amazon Linux AMI
-
Öffnen Sie die Datei
/boot/grub/grub.confmit einem Editor Ihrer Wahl.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Bearbeiten Sie die
kernelZeile des ersten Eintrags und fügen Sie dieprocessor.max_cstate=1Optionenintel_idle.max_cstate=1und hinzu, um den tiefsten Wert C-state fürC1Kerne im Leerlauf festzulegen.# created by imagebuilder default=0 timeout=1 hiddenmenu title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64) root (hd0,0) kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0intel_idle.max_cstate=1 processor.max_cstate=1initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.imgDie
intel_idle.max_cstate=1Option konfiguriert das C-state Limit für Intel-based Instanzen, und dieprocessor.max_cstate=1Option konfiguriert das C-state Limit für Instanzen. AMD-based Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen. -
Speichern Sie die Datei und beenden Sie den Editor.
-
Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.
[ec2-user ~]$sudo reboot
Das folgende Beispiel enthält eine Instance vom Typ c4.8xlarge mit zwei aktiven Cores, für die die Core-Frequenz vom Typ „Turbo Boost für alle Cores“ genutzt wird.
[ec2-user ~]$sudo turbostat stress -c 2 -t 10stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [5322] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.56 3.20 2.90 0 94.44 0.00 0.00 0.00 0.00 0.00 0.00 0.00 131.90 31.11 199.47 0.00 0 0 0 0.03 2.08 2.90 0 99.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 67.23 17.11 99.76 0.00 0 0 18 0.01 1.93 2.90 0 99.99 0 1 1 0.02 1.96 2.90 0 99.98 0.00 0.00 0.00 0 1 19 99.703.202.90 0 0.30 ... 1 1 10 0.02 1.97 2.90 0 99.98 0.00 0.00 0.00 1 1 28 99.673.202.90 0 0.33 1 2 11 0.04 2.63 2.90 0 99.96 0.00 0.00 0.00 1 2 29 0.02 2.11 2.90 0 99.98 ...
In diesem Beispiel laufen die Kerne für die vCPUs 19 und 28 mit 3,2 GHz, und die anderen Kerne befinden sich im C1 C-state, warten auf eine Anweisung. Obwohl die aktiven Kerne ihre maximale Turbo-Boost-Frequenz nicht erreichen, reagieren die inaktiven Kerne viel schneller auf neue Anfragen, als sie es in der Tiefe tun würden. C6 C-state
Basis-Performance mit geringster Variabilität
Sie können die Variabilität der Prozessorfrequenz mit P-states reduzieren. P-states steuern Sie die gewünschte Leistung (in CPU-Frequenz) von einem Kern aus. Für die meisten Workloads wird im Zustand P0, in dem Turbo Boost angefordert wird, eine bessere Performance erzielt. Es kann aber sein, dass Sie für Ihr System eine konsistente Performance konfigurieren möchten, weil es bei der Aktivierung von Turbo Boost-Frequenzen zu einer diskontinuierlichen Performance kommen kann.
Für Workloads vom Typ „Intel Advanced Vector Extensions“ (AVX oder AVX2) kann bei niedrigeren Frequenzen eine gute Performance erzielt und für AVX-Anweisungen mehr Leistung genutzt werden. Wenn der Prozessor bei einer niedrigeren Frequenz ausgeführt wird, indem Turbo Boost deaktiviert wird, kann die genutzte Leistungsmenge reduziert und die Geschwindigkeit konsistenter gehalten werden. Weitere Informationen zur Optimierung Ihrer Instance-Konfiguration und des Workload für AVX erhalten Sie auf der Intel-Website
Steuerung von CPU-Leerlauftreibern P-state. Neuere CPU-Generationen erfordern aktualisierte CPU-Leerlauf-Treiber, die der Kernelebene wie folgt entsprechen:
-
Linux-Kernel-Versionen 6.1 und höher — Unterstützt Intel Granite Rapids (z. B. R8i)
-
Linux-Kernel-Versionen 5.10 und höher — Unterstützt AMD Milan (z. B. M6a)
-
Linux-Kernel-Versionen 5.6 und höher — Unterstützt Intel Icelake (z. B. M6i)
Führen Sie den folgenden Befehl aus, um festzustellen, ob der Kernel eines laufenden Systems die CPU erkennt.
if [ -d /sys/devices/system/cpu/cpu0/cpuidle ]; then echo "C-state control enabled"; else echo "Kernel cpuidle driver does not recognize this CPU generation"; fi
Wenn die Ausgabe dieses Befehls auf fehlende Unterstützung hinweist, empfehlen wir Ihnen, den Kernel upzugraden.
In diesem Abschnitt wird beschrieben, wie Sie tiefere Schlafzustände einschränken und Turbo Boost deaktivieren (indem Sie den anfordern P1 P-state), um eine niedrige Latenz und die geringste Variabilität der Prozessorgeschwindigkeit für diese Art von Workloads zu gewährleisten.
Um tiefere Schlafzustände einzuschränken und Turbo Boost auf AL2 zu deaktivieren
-
Öffnen Sie die Datei
/etc/default/grubmit einem Editor Ihrer Wahl.[ec2-user ~]$sudo vim /etc/default/grub -
Bearbeiten Sie die
GRUB_CMDLINE_LINUX_DEFAULTZeile und fügen Sie dieprocessor.max_cstate=1Optionenintel_idle.max_cstate=1und hinzu, um sieC1als tiefste Zeile C-state für Kerne im Leerlauf festzulegen.GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0Die
intel_idle.max_cstate=1Option konfiguriert das C-state Limit für Intel-based Instanzen, und dieprocessor.max_cstate=1Option konfiguriert das C-state Limit für Instanzen. AMD-based Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen. -
Speichern Sie die Datei und beenden Sie den Editor.
-
Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:
[ec2-user ~]$grub2-mkconfig -o /boot/grub2/grub.cfg -
Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.
[ec2-user ~]$sudo reboot -
Wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, führen Sie den
P1P-state folgenden Befehl aus, um Turbo Boost zu deaktivieren.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Wenn die Verarbeitung Ihrer Workload abgeschlossen ist, können Sie Turbo Boost mit dem unten angegebenen Befehl wieder aktivieren.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
So begrenzen Sie tiefere Ruhezustände und deaktivieren Turbo Boost für Amazon Linux AMI
-
Öffnen Sie die Datei
/boot/grub/grub.confmit einem Editor Ihrer Wahl.[ec2-user ~]$sudo vim /boot/grub/grub.conf -
Bearbeiten Sie die
kernelZeile des ersten Eintrags und fügen Sie dieprocessor.max_cstate=1Optionenintel_idle.max_cstate=1und hinzu, um den tiefsten Wert C-state für Kerne im Leerlauf festzulegenC1.# created by imagebuilder default=0 timeout=1 hiddenmenu title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64) root (hd0,0) kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0intel_idle.max_cstate=1 processor.max_cstate=1initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.imgDie
intel_idle.max_cstate=1Option konfiguriert das C-state Limit für Intel-based Instanzen, und dieprocessor.max_cstate=1Option konfiguriert das C-state Limit für Instanzen. AMD-based Sie können beide Optionen zu Ihrer Konfiguration hinzufügen. So können Sie mit einer einzigen Konfiguration das gewünschte Verhalten sowohl für Intel als auch AMD festlegen. -
Speichern Sie die Datei und beenden Sie den Editor.
-
Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.
[ec2-user ~]$sudo reboot -
Wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, führen Sie den
P1P-state folgenden Befehl aus, um Turbo Boost zu deaktivieren.[ec2-user ~]$sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo" -
Wenn die Verarbeitung Ihrer Workload abgeschlossen ist, können Sie Turbo Boost mit dem unten angegebenen Befehl wieder aktivieren.
[ec2-user ~]$sudo sh -c "echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo"
Das folgende Beispiel enthält eine Instance vom Typ c4.8xlarge mit zwei aktiven vCPUs, für die die Core-Basisfrequenz ohne Turbo Boost genutzt wird.
[ec2-user ~]$sudo turbostat stress -c 2 -t 10stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd stress: info: [5389] successful run completed in 10s pk cor CPU %c0 GHz TSC SMI %c1 %c3 %c6 %c7 %pc2 %pc3 %pc6 %pc7 Pkg_W RAM_W PKG_% RAM_% 5.59 2.90 2.90 0 94.41 0.00 0.00 0.00 0.00 0.00 0.00 0.00 128.48 33.54 200.00 0.00 0 0 0 0.04 2.90 2.90 0 99.96 0.00 0.00 0.00 0.00 0.00 0.00 0.00 65.33 19.02 100.00 0.00 0 0 18 0.04 2.90 2.90 0 99.96 0 1 1 0.05 2.90 2.90 0 99.95 0.00 0.00 0.00 0 1 19 0.04 2.90 2.90 0 99.96 0 2 2 0.04 2.90 2.90 0 99.96 0.00 0.00 0.00 0 2 20 0.04 2.90 2.90 0 99.96 0 3 3 0.05 2.90 2.90 0 99.95 0.00 0.00 0.00 0 3 21 99.952.902.90 0 0.05 ... 1 1 28 99.922.902.90 0 0.08 1 2 11 0.06 2.90 2.90 0 99.94 0.00 0.00 0.00 1 2 29 0.05 2.90 2.90 0 99.95
Die Kerne für die vCPUs 21 und 28 arbeiten aktiv mit der grundlegenden Prozessorgeschwindigkeit von 2,9 GHz, und alle inaktiven Kerne laufen ebenfalls mit der Basisgeschwindigkeit, die in der Option „Bereit zur Annahme von Anweisungen“ C1 C-state angegeben ist.