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