Come posso esaminare le statistiche NUMA per il mio carico di lavoro in esecuzione su istanze EC2?

4 minuti di lettura
0

Eseguo il mio carico di lavoro su istanze Amazon Elastic Compute Cloud (Amazon EC2) basate su Nitro. Desidero esaminare le statistiche relative alle prestazioni e a NUMA (Non-Uniform Memory Access).

Breve descrizione

I seguenti fattori influiscono sulle prestazioni di un'applicazione ospitata su un'istanza EC2:

  • Sovrautilizzo della CPU
  • Utilizzo della memoria
  • Volume EBS
  • Statistiche di rete
  • Non compatibilità con NUMA

Nell'architettura NUMA, ogni CPU ha accesso alla propria memoria assegnata, nota come memoria locale. Ogni CPU può accedere anche alla memoria allocata ad altre CPU, nota come memoria esterna. Se le applicazioni ospitate sulle tue istanze non sono compatibili con NUMA, l'accesso alla memoria esterna comporta costi aggiuntivi e potrebbe influire sulle prestazioni. Contatta il fornitore dell'applicazione per verificare se è compatibile con NUMA.

Risoluzione

Esamina le statistiche NUMA

Nota: per esaminare i componenti della performance diversi dalle statistiche NUMA, consulta la pagina Come posso risolvere i problemi di connessione lenta a un sito Web ospitato sulla mia istanza EC2?

Per esaminare le statistiche NUMA, completa i seguenti passaggi:

1.    Esegui il seguente comando per verificare se il tipo di istanza si trova in un unico nodo NUMA o in più nodi NUMA.

Nota: il tipo di istanza è r5.16xlarge e ha 2 nodi NUMA.

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

2.    Esegui il seguente comando per installare il pacchetto numactl:

sudo yum install numactl

3.    Esegui il seguente comando per esaminare la topologia NUMA:

sudo numactl -H

Nel seguente output di esempio la topologia NUMA è divisa in due nodi, il nodo 0 e il nodo 1. Al nodo 0 sono assegnati 32 CPU e 255,225 MB di memoria. Al nodo 1 sono assegnati l'altra metà delle CPU e 254,924 MB di memoria. La distanza tra i nodi indica le latenze nell'accesso alle pagine di memoria dell'altro nodo.


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.    Esegui il seguente comando per esaminare le statistiche NUMA:

sudo numastat

Di seguito è riportato un esempio di output del comando:

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

Per una spiegazione dettagliata di ogni statistica, consulta la pagina A.11. NUMASTAT del Red Hat Customer Portal.

L'aumento delle statistiche numa_foreign e numa_miss può indicare che l'applicazione in esecuzione sull'istanza EC2 non è compatibile con NUMA. Questo potrebbe influire sulle prestazioni. Per risolvere questo problema, disattiva NUMA a livello di grub. In alternativa, prova ad associare l'applicazione al nodo NUMA specifico. Consulta la pagina Ottimizzazioni del sistema operativo per ulteriori informazioni.

Disattiva NUMA in modo permanente 

Per disattivare NUMA in modo permanente su Amazon Linux 2, CentOS7 o RHEL 7, esegui i seguenti comandi:

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

Per disattivare NUMA in modo permanente su Amazon Linux 2023, esegui il seguente comando:

# grubby --args "numa=off" —update-kernel DEFAULT
AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa