Comment examiner les statistiques de NUMA pour mon application qui s'exécute sur des instances EC2 ?

Lecture de 4 minute(s)
0

J'exécute mon application sur des instances Nitro Amazon Elastic Compute Cloud (Amazon EC2). Je souhaite examiner les performances et les statistiques d'accès à la mémoire non uniforme (NUMA).

Brève description

De multiples facteurs peuvent affecter les performances de l'application hébergée sur une instance EC2, notamment :

  • La surutilisation du processeur
  • L’utilisation de la mémoire
  • Le volume EBS
  • Les statistiques du réseau
  • Si l'application n'est pas compatible avec NUMA

Dans l'architecture NUMA, chaque processeur a accès à sa propre mémoire attribuée, appelée mémoire locale. Chaque processeur peut également accéder à la mémoire allouée aux autres processeurs, appelée mémoire étrangère. Si les applications hébergées sur vos instances ne sont pas compatibles NUMA, l'accès à la mémoire étrangère entraîne des coûts supplémentaires et peut affecter les performances. Contactez le fournisseur de l'application pour vérifier si votre application est compatible avec NUMA.

Résolution

Examen des statistiques de NUMA

**Remarque :**pour examiner les composants des performances autres que les statistiques de NUMA, consultez Comment résoudre les problèmes de connexions lentes à un site Web hébergé sur mon instance EC2 ?

Pour examiner les statistiques de NUMA, procédez comme suit :

1.    Exécutez la commande suivante pour vérifier si le type d'instance est un nœud NUMA simple ou multiple.

**Remarque :**le type d'instance est r5.16xlarge et possède 2 nœuds NUMA.

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

2.    Exécutez la commande suivante pour installer le package numactl :

sudo yum install numactl

3.    Exécutez la commande suivante pour vérifier la topologie NUMA :

sudo numactl -H

Dans l'exemple de sortie suivant, la topologie NUMA est divisée en deux nœuds, le nœud 0 et le nœud 1. Le nœud 0 possède 32 processeurs et 255 225 Mo de mémoire lui sont affectés. Le nœud 1 possède l'autre moitié des processeurs et 254 924 Mo de mémoire affectée. La distance des nœuds indique les temps de latence lors de l'accès aux pages mémoire depuis l'autre nœud.


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.    Exécutez la commande suivante pour vérifier les statistiques de NUMA :

sudo numastat

Voici un exemple de sortie de la commande :

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

Pour une explication détaillée de chaque statistique, voir A.11. NUMASTAT sur le portail client Red Hat.

Des augmentation des statistiques numa_foreign et numa_miss peuvent indiquer que l'application exécutée sur l'instance EC2 n'est pas compatible NUMA. Cela peut affecter les performances. Pour résoudre ce problème, désactivez NUMA au niveau du grub. Vous pouvez également essayer de lier l'application à un nœud NUMA spécifique. Pour plus d'informations, consultez Optimisations du système d'exploitation.

Désactivation permanente de NUMA

Pour désactiver définitivement NUMA sur Amazon Linux 2, CentOS7 ou RHEL 7, exécutez les commandes suivantes :

sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="numa=off"
sudo grub2-mkconfig -o /etc/grub2.cfg
sudo reboot
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un mois