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

Dernière mise à jour : 23/07/2021

J'exécute mon application sur des instances Nitro Amazon Elastic Compute Cloud (Amazon EC2). Comment examiner les performances et les statistiques 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 CPU, l'utilisation de la mémoire, le volume EBS, les statistiques du réseau, ou si l'application n'est pas compatible NUMA. NUMA est l'accès non-uniforme à la mémoire. Dans une architecture NUMA, chaque CPU a accès à sa propre mémoire attribuée, appelée mémoire locale. Chaque CPU peut également accéder à la mémoire allouée aux autres CPU, 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 confirmer si votre application est compatible NUMA.

Résolution

Examen des statistiques NUMA

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

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

1.    Exécutez la commande suivante pour confirmer si le type d'instance est en 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 (32) et 254 924 Mo de mémoire affectée. La distance des nœuds indique les latences impliquées dans l'accès aux pages mémoire à partir de 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 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 augmentations dans les 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. Ou bien, essayez de lier l'application à un nœud NUMA spécifique. Pour plus d'informations, consultez l'étape 8 de la section 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
grub2-mkconfig -o /etc/grub2.cfg
reboot

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?