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.
Kontrolle des Prozessorstatus für Ihre EC2 AL2 Amazon-Instance
C-Status steuern die Ruhezustände, in die ein Kern eintreten kann, wenn er sich im Leerlauf befindet. C-Zustände sind von C0 (Arbeitszustand, in dem der Core „wach“ ist und Anweisungen ausführt) bis C6 („tiefster“ Leerlaufzustand, in dem ein Core ausgeschaltet ist) nummeriert.
P-Status steuern die gewünschte Leistung (in CPU-Frequenz) eines Kerns. P-Zustände sind ab P0 (höchste Performancestufe, in der Intel Turbo Boost-Technologie für den Core eingesetzt werden kann, um ggf. die Frequenz zu erhöhen) über P1 (in diesem P-Zustand wird die maximale Basisfrequenz angefordert) bis P15 (geringstmögliche Frequenz) nummeriert.
Es kann ratsam sein, die Einstellungen für den C- bzw. P-Zustand zu ändern, um die Konsistenz der Prozessorleistung zu erhöhen, die Latenz zu reduzieren oder Ihre Instance für einen bestimmten Workload zu optimieren. Die Standardeinstellungen für den C- und P-Zustand sind auf maximale Performance ausgelegt. Dies ist für die meisten Workloads optimal. Erwägen Sie jedoch, mit den für diese Instances verfügbaren Einstellungen für den C- oder P-Zustand zu experimentieren, wenn Ihre Anwendung von einer verringerten Latenz auf Kosten von höheren Single- oder Dual-Core-Frequenzen oder von einer konsistenten Performance bei niedrigeren Frequenzen (im Gegensatz zu diskontinuierlichen Turbo Boost-Frequenzen) profitieren würde.
Informationen zu EC2 Amazon-Instance-Typen, mit denen das Betriebssystem C-Status und P-Status von Prozessoren steuern kann, finden Sie unter Prozessor-State-Steuerung für Ihre EC2 Amazon-Instance im EC2 Amazon-Benutzerhandbuch.
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 für Amazon Linux. Sie könnten jedoch auch für andere Linux-Distributionen mit einer Linux-Kernel-Version 3.9 oder neuer funktionieren.
Anmerkung
Bei den Beispielen auf dieser Seite wurde Folgendes verwendet:
-
Das turbostat-Dienstprogramm zeigt Informationen zur Prozessorfrequenz und zum C-Zustand an. 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 Informationen zum C-Zustand nicht anzeigt, schließen Sie die Option --debug im Befehl (sudo turbostat --debug
stress <options>) ein.
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 laufen v CPUs 21 und 28 mit ihrer maximalen Turbo-Boost-Frequenz, weil die anderen Kerne in den C6 Ruhezustand übergegangen sind, um Strom zu sparen und sowohl Strom als auch thermischen Spielraum für die arbeitenden Kerne bereitzustellen. v CPUs 3 und 10 (jeweils teilen sich einen Prozessorkern mit v CPUs 21 und 28) befinden sich in dem C1 Zustand und warten auf Anweisungen.
Im folgenden Beispiel verrichten alle 18 Kerne aktiv Arbeit, sodass kein Spielraum für maximalen Turbo-Boost besteht, aber sie laufen alle mit der „All-Core-Turbo-Boost-Geschwindigkeit“ von 3,2 GHz.
[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 Performance und geringe Latenz durch die Beschränkung von tieferen C-Zuständen
Mit dem C-Zustand werden die Ruhezustandsebenen gesteuert, in denen sich ein Core im inaktiven Zustand befinden kann. Es kann ratsam sein, die C-Zustände zu steuern, um Ihr System im Hinblick auf Latenz und Performance zu optimieren. 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, dass keine tieferen C-Zustände verwendet werden. Hierdurch wird die Latenz in Bezug auf die Prozessorreaktion reduziert, aber gleichzeitig wird auch der Turbo Boost-Spielraum für andere Cores verringert.
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 zu begrenzen, aktivieren Sie AL2
-
Öffnen Sie die Datei
/etc/default/grubmit einem Editor Ihrer Wahl.[ec2-user ~]$sudo vim /etc/default/grub -
Bearbeiten Sie die Zeile
GRUB_CMDLINE_LINUX_DEFAULTund fügen Sie die Optionenintel_idle.max_cstate=1undprocessor.max_cstate=1hinzu, umC1als tiefstmöglichen C-Zustand für Cores 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=1-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, dieprocessor.max_cstate=1-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. 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 Zeile
kerneldes ersten Eintrags und fügen Sie die Optionenintel_idle.max_cstate=1undprocessor.max_cstate=1hinzu, umC1als tiefstmöglichen C-Zustand für Cores 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=1-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, dieprocessor.max_cstate=1-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. 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 Version CPUs 19 und 28 mit 3.2 GHz, und die anderen Kerne befinden sich im C1 C-Status und warten auf Befehle. Für die aktiven Cores wird zwar nicht die maximale Turbo Boost-Frequenz erreicht, aber die inaktiven Cores können viel schneller auf neue Anforderungen reagieren, als dies im tieferen C-Zustand C6 der Fall wäre.
Basis-Performance mit geringster Variabilität
Sie können die Variabilität der Prozessorfrequenz mit P-Zuständen reduzieren. Mit P-Zuständen wird die gewünschte Performance für einen Core gesteuert (nach CPU-Frequenz). 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.
Intel Advanced Vector Extensions (AVX oder AVX2) -Workloads können bei niedrigeren Frequenzen eine gute Leistung erbringen, und AVX-Befehle können mehr Strom verbrauchen. 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
CPU-Leerlauf-Treiber steuern den P-Zustand. 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 (zum Beispiel M6a)
-
Linux-Kernel-Versionen 5.6 und höher — Unterstützt Intel Icelake (zum Beispiel 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 Ruhezustände begrenzen und Turbo Boost deaktivieren (durch Anforderung des P-Zustands P1), um für diese Arten von Workloads ein geringe Latenz und die geringstmögliche Variabilität der Prozessorgeschwindigkeit bereitzustellen.
Um tiefere Schlafzustände zu begrenzen und Turbo Boost einzuschalten AL2
-
Öffnen Sie die Datei
/etc/default/grubmit einem Editor Ihrer Wahl.[ec2-user ~]$sudo vim /etc/default/grub -
Bearbeiten Sie die Zeile
GRUB_CMDLINE_LINUX_DEFAULTund fügen Sie die Optionenintel_idle.max_cstate=1undprocessor.max_cstate=1hinzu, umC1als tiefstmöglichen C-Zustand für Cores 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=1-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, dieprocessor.max_cstate=1-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. 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 -
Führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren, wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die im P-Zustand
P1bereitgestellt wird.[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 Zeile
kerneldes ersten Eintrags und fügen Sie die Optionenintel_idle.max_cstate=1undprocessor.max_cstate=1hinzu, umC1als tiefstmöglichen C-Zustand für Cores 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=1-Option konfiguriert das C-Zustandslimit für Intel-basierte Instances, dieprocessor.max_cstate=1-Option konfiguriert das C-Zustandslimit für AMD-basierte Instances. 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 -
Führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren, wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die im P-Zustand
P1bereitgestellt wird.[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 zeigt eine c4.8xlarge Instanz mit zwei V, die CPUs aktiv mit der Basiskernfrequenz arbeiten, ohne Turbo Boost.
[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 v CPUs 21 und 28 arbeiten aktiv mit der Basisprozessorgeschwindigkeit von 2,9 GHz, und alle inaktiven Kerne laufen ebenfalls mit der Basisgeschwindigkeit im C1 C-Zustand und sind bereit, Befehle anzunehmen.