L'accès mémoire non uniforme ou architecture de mémoire non uniforme (NUMA) est une conception de mémoire physique utilisée dans l'architecture SMP (multiprocesseurs), où le temps d'accès à la mémoire dépend de l'emplacement de la mémoire par rapport à un processeur. Sous NUMA, un processeur peut accéder à sa propre mémoire locale plus rapidement que la mémoire non locale, c'est-à-dire la mémoire locale à un autre processeur ou la mémoire partagée entre les processeurs.
Dans un système NUMA, les processeurs, la mémoire et les E/S sont regroupés en cellules. Les caractéristiques de latence et de bande passante de la communication à l'intérieur d'une cellule sont « rapides » tandis que la sortie d'une cellule est « lente ». Étant donné que la mémoire des systèmes NUMA est physiquement distribuée mais logiquement partagée, ces systèmes offrent de meilleures performances aux applications optimisées pour utiliser leurs fonctionnalités. Pour les applications non optimisées, elles offrent toujours de meilleures performances car le comportement par défaut est conçu pour être bénin, voire bénéfique, et elles ont toujours accès à des ressources partagées beaucoup plus importantes de mémoire, de processeurs et d'espace disque.
Comment pouvons-nous identifier si NUMA est activé
NUMA doit être activé dans le BIOS. Si dmesg n'a pas d'enregistrements d'initialisation de numa lors du démarrage, il est possible que les messages liés à NUMA dans le tampon en anneau du noyau aient été écrasés.
Systèmes compatibles NUMA
Si NUMA est activé sur le BIOS, exécutez la commande ‘numactl –hardware ‘ pour répertorier l'inventaire des nœuds disponibles sur le système. Vous trouverez ci-dessous un exemple de sortie de numactl –hardware sur un système doté de NUMA.
# numactl --hardware available: 2 nodes (0-1) node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23 node 0 size: 8157 MB node 0 free: 88 MB node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 node 1 size: 8191 MB node 1 free: 5176 MB node distances: node 0 1 0: 10 20 1: 20 10
Systèmes désactivés NUMA
1. Si NUMA est désactivé sur le BIOS, alors la commande ‘numactl –show ' n'affiche pas plusieurs nœuds.
# numactl --show policy: default preferred node: current physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 cpubind: 0 nodebind: 0 membind: 0
2. La commande ‘numactl –hardware ‘ ne répertorie pas non plus plusieurs nœuds.
available: 1 nodes (0) node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 node 0 size: 65525 MB node 0 free: 17419 MB node distances: node 0 0: 10
3. Si le serveur ne prend pas en charge NUMA ou si l'option BIOS n'est pas activée, les messages suivants s'afficheront dans dmesg
No NUMA configuration found Faking a node at 0000000000000000-0000001027fff000
4. Si ACPI est désactivé, cela désactivera également NUMA ; vérifiez que l'ACPI n'est pas désactivé par un paramètre du noyau grub.conf et supprimez-le s'il est trouvé :
$ grep acpi=off /proc/cmdline $