Wie kann ich die NUMA-Statistiken für meinen Workload überprüfen, der auf EC2 Instances ausgeführt wird?

Lesedauer: 4 Minute
0

Ich führe meinen Workload auf Nitro-basierten Instances von Amazon Elastic Compute Cloud (Amazon EC2) aus. Ich möchte die Statistiken zur Leistung und zum Non-Uniform Memory Access (NUMA) überprüfen.

Kurzbeschreibung

Die folgenden Faktoren wirken sich auf die Leistung einer Anwendung aus, die auf einer EC2 Instance gehostet wird:

  • CPU-Überlastung
  • Speichernutzung
  • Das EBS-Volumen
  • Netzwerkstatistiken
  • Nicht NUMA-bewusst

In der NUMA-Architektur hat jede CPU Zugriff auf ihren eigenen zugewiesenen Speicher, den sogenannten lokalen Speicher. Jede CPU kann auch auf Speicher zugreifen, der anderen CPUs zugewiesen ist, und dieser wird als Fremdspeicher bezeichnet. Wenn auf Ihren Instances gehostete Anwendungen nicht NUMA-fähig sind, verursacht der Zugriff auf den Fremdspeicher zusätzliche Kosten und kann die Leistung beeinträchtigen. Wenden Sie sich an den Hersteller der Anwendung, um zu überprüfen, ob Ihre Anwendung NUMA-fähig ist.

Lösung

Überprüfen Sie die NUMA-Statistiken

Hinweis: Informationen zu anderen Leistungskomponenten als den NUMA-Statistiken finden Sie unter Wie behebe ich langsame Verbindungen zu einer Website, die auf meiner EC2 Instance gehostet wird?

Gehen Sie wie folgt vor, um die NUMA-Statistiken zu überprüfen:

1.    Führen Sie den folgenden Befehl aus, um zu überprüfen, ob sich der Instance-Typ in einem einzelnen NUMA- oder Multi-NUMA-Knoten befindet.

Hinweis: Der Instance-Typ ist r5.16xlarge und hat 2 NUMA-Knoten.

lscpu | grep -i numa
NUMA node(s): 2

2.    Führen Sie den folgenden Befehl aus, um das numactl-Paket zu installieren:

sudo yum install numactl

3.    Führen Sie den folgenden Befehl aus, um die NUMA-Topologie zu überprüfen:

sudo numactl -H

In der folgenden Beispielausgabe ist die NUMA-Topologie in zwei Knoten unterteilt, node 0 und node 1. Dem Knoten 0 (node 0) sind 32 CPUs und 255.225 MB Speicher zugewiesen. Knoten 1 (node 1) hat die andere Hälfte der CPUs und 254.924 MB zugewiesenen Speicher. Der Knotenabstand gibt die Latenzen beim Zugriff auf Speicherseiten vom anderen Knoten aus an.


available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
node 0 size: 255140 MB
node 0 free: 254794 MB
node 1 cpus: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
node 1 size: 255225 MB
node 1 free: 254924 MB
node distances:
node   0   1
0:  10  21
1:  21  10

4.    Führen Sie den folgenden Befehl aus, um die NUMA-Statistiken zu überprüfen:

sudo numastat

Das Folgende ist ein Beispiel für die Befehlsausgabe:

node                       node0           node1
numa_hit                  314825          288025
numa_miss                      0               0
numa_foreign                   0               0
interleave_hit             37958           37620
local_node                311752          248476
other_node                  3073           39549

Eine ausführliche Erläuterung der einzelnen Statistiken finden Sie in A.11. NUMASTAT auf dem Red-Hat-Kundenportal.

Ein Anstieg der Statistiken numa_foreign und numa_miss kann darauf hindeuten, dass die auf der EC2 Instance ausgeführte Anwendung nicht NUMA-fähig ist. Dies kann sich auf die Leistung auswirken. Um dieses Problem zu beheben, schalten Sie NUMA auf Grub-Ebene aus. Oder versuchen Sie, die Anwendung an den bestimmten NUMA-Knoten zu binden. Weitere Informationen finden Sie unter Betriebssystemoptimierungen.

NUMA dauerhaft ausschalten

Führen Sie die folgenden Befehle aus, um NUMA auf Amazon Linux 2, CentOS7 oder RHEL 7 dauerhaft zu deaktivieren:

sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="numa=off"
sudo grub2-mkconfig -o /etc/grub2.cfg
sudo reboot

Führen Sie den folgenden Befehl aus, um NUMA auf Amazon Linux 2023 dauerhaft zu deaktivieren:

# grubby --args "numa=off" —update-kernel DEFAULT
AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr