View a markdown version of this page

Kontrolle des Prozessorstatus für Ihre Amazon EC2 AL2-Instance - Amazon Linux 2

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 Amazon EC2 AL2-Instance

C-states steuert die Schlafstufen, die ein Kern erreichen kann, wenn er inaktiv ist. C-states sind nummeriert, beginnend mit C0 (dem flachsten Zustand, in dem der Kern vollständig aktiv ist und Befehle ausführt) und gehen bis C6 (der tiefste Ruhezustand, in dem ein Kern ausgeschaltet ist).

P-states steuern die gewünschte Leistung (in CPU-Frequenz) von einem Kern aus. P-states werden ab P0 nummeriert (die höchste Leistungseinstellung, bei der der Kern die Intel Turbo-Boost-Technologie verwenden darf, um die Frequenz nach Möglichkeit zu erhöhen), und sie gehen von P1 (die, die P-state die maximale Grundfrequenz anfordert) bis P15 (die niedrigste mögliche Frequenz).

Möglicherweise möchten Sie die P-state Oder-Einstellungen ändern, um die C-state 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 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 P-state Einstellungen C-state oder zu experimentieren, die für diese Instanzen verfügbar sind.

Informationen zu Amazon EC2 EC2-Instance-Typen, mit denen das Betriebssystem den Prozessor C-states steuern kann P-states, finden Sie unter Prozessor-State-Kontrolle für Ihre Amazon EC2 EC2-Instance im Amazon EC2 EC2-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 Hilfsprogramm 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 in der Ausgabe die C-state Informationen nicht angezeigt werden, fügen Sie die --debug Option in den Befehl ein (sudo turbostat --debug stress <options>).

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 10 stress: 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.84 3.45 2.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.61 3.44 2.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 10 stress: 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 geringe Latenz durch tiefere Limitierung C-states

C-states steuert die Schlafstufen, die ein Kern erreichen kann, wenn er inaktiv ist. Möglicherweise möchten Sie Ihr System so C-states einstellen, dass Latenz und Leistung gegeneinander 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, dass es nicht tiefer verwendet wird C-states, wodurch die Reaktionslatenz des Prozessors reduziert wird, was aber wiederum auch den Spielraum reduziert, der anderen Kernen für 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
  1. Öffnen Sie die Datei /etc/default/grub mit einem Editor Ihrer Wahl.

    [ec2-user ~]$ sudo vim /etc/default/grub
  2. Bearbeiten Sie die GRUB_CMDLINE_LINUX_DEFAULT Zeile und fügen Sie die processor.max_cstate=1 Optionen intel_idle.max_cstate=1 und hinzu, um sie C-state für Kerne im Leerlauf C1 als tiefsten Wert festzulegen.

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0

    Die intel_idle.max_cstate=1 Option konfiguriert das C-state Limit für Intel-based Instances und die processor.max_cstate=1 Option konfiguriert das C-state Limit für Instances. 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.

  3. Speichern Sie die Datei und beenden Sie den Editor.

  4. Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:

    [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. 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
  1. Öffnen Sie die Datei /boot/grub/grub.conf mit einem Editor Ihrer Wahl.

    [ec2-user ~]$ sudo vim /boot/grub/grub.conf
  2. Bearbeiten Sie die kernel Zeile des ersten Eintrags und fügen Sie die processor.max_cstate=1 Optionen intel_idle.max_cstate=1 und hinzu, um die tiefste Position C-state für C1 Kerne 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=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1 initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img

    Die intel_idle.max_cstate=1 Option konfiguriert das C-state Limit für Intel-based Instances und die processor.max_cstate=1 Option konfiguriert das C-state Limit für Instances. 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.

  3. Speichern Sie die Datei und beenden Sie den Editor.

  4. 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 10 stress: 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.70 3.20 2.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.67 3.20 2.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 in der C1 C-state, auf Anweisung warten. Obwohl die aktiven Kerne ihre maximale Turbo-Boost-Frequenz nicht erreichen, können die inaktiven Kerne viel schneller auf neue Anfragen reagieren als in den tieferen Kernen. 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-Treibern im Leerlauf 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 (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 einschränken und Turbo Boost (auf Anfrage P1 P-state) deaktivieren können, um eine geringe Latenz und die geringste Variabilität der Prozessorgeschwindigkeit für diese Art von Workloads zu gewährleisten.

Um tiefere Schlafzustände zu begrenzen und Turbo Boost auf AL2 zu deaktivieren
  1. Öffnen Sie die Datei /etc/default/grub mit einem Editor Ihrer Wahl.

    [ec2-user ~]$ sudo vim /etc/default/grub
  2. Bearbeiten Sie die GRUB_CMDLINE_LINUX_DEFAULT Zeile und fügen Sie die processor.max_cstate=1 Optionen intel_idle.max_cstate=1 und hinzu, um sie C-state für Kerne im Leerlauf C1 als tiefsten Wert festzulegen.

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 intel_idle.max_cstate=1 processor.max_cstate=1" GRUB_TIMEOUT=0

    Die intel_idle.max_cstate=1 Option konfiguriert das C-state Limit für Intel-based Instances und die processor.max_cstate=1 Option konfiguriert das C-state Limit für Instances. 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.

  3. Speichern Sie die Datei und beenden Sie den Editor.

  4. Führen Sie den folgenden Befehl aus, um die Bootkonfiguration erneut zu erstellen:

    [ec2-user ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
  5. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

    [ec2-user ~]$ sudo reboot
  6. Wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die der P1 P-state bietet, führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren.

    [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
  7. 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
  1. Öffnen Sie die Datei /boot/grub/grub.conf mit einem Editor Ihrer Wahl.

    [ec2-user ~]$ sudo vim /boot/grub/grub.conf
  2. Bearbeiten Sie die kernel Zeile des ersten Eintrags und fügen Sie die processor.max_cstate=1 Optionen intel_idle.max_cstate=1 und hinzu, um die tiefste Position 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=ttyS0 intel_idle.max_cstate=1 processor.max_cstate=1 initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img

    Die intel_idle.max_cstate=1 Option konfiguriert das C-state Limit für Intel-based Instances und die processor.max_cstate=1 Option konfiguriert das C-state Limit für Instances. 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.

  3. Speichern Sie die Datei und beenden Sie den Editor.

  4. Starten Sie Ihre Instance neu, um die neue Kerneloption zu aktivieren.

    [ec2-user ~]$ sudo reboot
  5. Wenn Sie die geringe Variabilität der Prozessorgeschwindigkeit benötigen, die der P1 P-state bietet, führen Sie den folgenden Befehl aus, um Turbo Boost zu deaktivieren.

    [ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo"
  6. 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 10 stress: 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.95 2.90 2.90 0 0.05 ... 1 1 28 99.92 2.90 2.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 Basisprozessorgeschwindigkeit von 2,9 GHz, und alle inaktiven Kerne laufen ebenfalls mit der Basisgeschwindigkeit der Befehle C1 C-state, bereit zur Annahme.