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