Dans le noyau Linux, la documentation de CONFIG_NUMA
dit:
Enable NUMA (Non Uniform Memory Access) support.
he kernel will try to allocate memory used by a CPU on the
local memory controller of the CPU and add some more
NUMA awareness to the kernel.
For 64-bit this is recommended if the system is Intel Core i7
(or later), AMD Opteron, or EM64T NUMA.
J'ai un processeur Intel Core i7, mais AFAICT il n'a qu'un seul nœud NUMA:
$ numactl --hardware
available: 1 nodes (0)
node 0 cpus: 0 1 2 3 4 5 6 7
node 0 size: 16063 MB
node 0 free: 15031 MB
node distances:
node 0
0: 10
Alors, quel est le but d'avoir CONFIG_NUMA=y
, quand i7 n'a qu'un seul nœud NUMA?
la source
CONFIG_NUMA
decore i7
?Tout d'abord, notez que Intel Core i7 n'est qu'une désignation commerciale et que la phrase Intel Core i7 (ou version ultérieure) est très vague. Alors qu'est-ce que cela pourrait signifier?
Les
Kconfig
modifications du texte d'aide du noyau Linux mentionnant un Intel Core 7i , puis corrigées en Intel Core i7 , ont été effectuées en novembre 2008. Le journal de validation se lit comme suit:Il ne peut raisonnablement se référer qu'aux processeurs Intel Core i7 publiés ou annoncés par spécification à ce moment-là. Ce serait les processeurs Bloomfield , basés sur la microarchitecture Nehalem , qui ont déplacé le contrôleur de mémoire du Northbridge sur le CPU (ce que AMD avait fait en 2003 avec l'Opteron / AMD64) et a introduit QuickPath Interconnect / QPI (comme pendant de l'HyperTransport d'AMD) pour l'interconnexion CPU / CPU et CPU / IOH (hub IO, ex-Northbridge).
Les CPU Bloomdale i7 ont été les premières entrées du nouveau schéma de nommage Core i {3,5,7} . Donc, lorsque ce texte de documentation Linux a été écrit, i7 ne faisait pas spécifiquement référence au Core i7 par opposition à i5 (premier en 09/2009) ou i3 (premier en 01/2010), mais selon toute vraisemblance à la nouvelle microarchitecture Nehalem avec son contrôleur de mémoire intégré et QPI.
Il y a un communiqué de presse Intel du 11/2008 sur l'i7 ( Intel lance le processeur le plus rapide de la planète ) qui déclare que le processeur Core i7 fait plus que doubler la bande passante mémoire des précédentes plates - formes Intel "Extreme" , mais ne mentionne pas du tout NUMA .
La raison est, je pense, que NUMA n'a pas d'importance pour les PC de bureau, pas même pour les «extrêmes».
NUMA est important pour les serveurs coûteux qui ont plusieurs sockets CPU (pas seulement plusieurs cœurs sur un socket) avec des voies d'accès à la mémoire physique dédiées (pas seulement un contrôleur de mémoire), de sorte que chaque CPU dispose de sa mémoire locale dédiée, qui est "plus proche" de celle-ci que la mémoire des autres CPU. (Pensez à 8 sockets, 64 cœurs, 256 Go de RAM.) NUMA signifie qu'un processeur peut également accéder à la mémoire distante (la mémoire locale d'un autre processeur) en plus de sa propre mémoire locale, bien qu'à un coût plus élevé. NUMA est la synthèse d'une architecture de mémoire partagée comme SMP, où toute la mémoire est également disponible pour tous les cœurs, et d'une architecture de mémoire distribuée comme MPP (Massively Parallel Processing), qui donne à chaque nœud un bloc de mémoire dédié. Il s'agit de MPP, mais il ressemble à SMP pour l'application.
Les cartes mères de bureau n'ont pas de double socket et les processeurs de bureau Intel, y compris les éditions Extreme i7, n'ont pas le lien QPI supplémentaire pour la configuration à double socket.
Consultez l' article Wikipedia QPI pour voir en quoi QPI est pertinent pour NUMA:
La façon dont un processeur Intel Nehalem sur une carte serveur multi-socket rend l'accès à la mémoire non locale se fait via QPI. Également dans l' article sur NUMA :
Consultez ce rapport depuis le 11/2008 pour voir qu'Intel a désactivé l'une des deux liaisons QPI sur l'i7, désactivant ainsi la configuration à double socket, où NUMA s'applique:
Je me suis donc éloigné de votre question concernant mes résultats de recherche Google… Vous demandez pourquoi les docs Linux ont commencé à recommander de l'activer fin 2008? Je ne suis pas sûr que cette question ait une réponse prouvablement correcte… Il faudrait demander à l'auteur du doc. Activer NUMA ne profite pas aux utilisateurs de CPU de bureau, mais ne les blesse pas non plus, tout en aidant les utilisateurs multi-socket, alors pourquoi pas? Cela aurait pu être la justification. Trouvé qui se reflétait dans une discussion sur la désactivation de NUMA sur le tracker Arch Linux ( FS # 31187 - [linux] - désactiver NUMA à partir des fichiers de configuration ).
L'auteur du document aurait également pu penser au potentiel NUMA de l'architecture Nehalem dont, lors de la rédaction du document, les processeurs Core i7 11/2008 (920, 940, 965) étaient les seuls représentants; les premières puces Nehalem pour lesquelles NUMA aurait vraiment été logique sont probablement les processeurs Xeon Q1 / 2009 avec double liaison QPI tels que le Xeon E5520 .
la source
Je pense que si vous utilisez le
--show
commutateur, cela pourrait avoir plus de sens:Vous pouvez donc contrôler l'utilisation de physcpubind comme ceci:
Cela limiterait l'application
myapp
aux 2 premiers cœurs de processeur. Mon système est un i5 à 4 cœurs.Les références
la source
J'ai recherché la même chose pour mon PC de bureau tout en construisant mon noyau par moi-même. J'ai décidé de désactiver NUMA après de nombreuses recherches. Mon processeur est un Core i7 3820 qui dispose de 8 processeurs avec HT. Cette page m'a aidé à prendre ma décision.
désactiver NUMA des fichiers de configuration
En résumé, NUMA ne vaut que si vous avez plus d'un socket CPU (indépendamment des cœurs). La puissance de traitement des machines à 1 CPU Socket est très faible, même avec plusieurs cœurs, mais elle est à peine perceptible, de sorte que la plupart des distributions la laissent activée car elle fournira un énorme avantage aux serveurs et aux machines avec plus de 1 socket.
la source
Dans un PC avec au plus un processeur, NUMA est totalement inutile. N'hésitez pas à le désactiver dans votre propre noyau.
Vous pouvez toujours contrôler la liaison CPU par ensemble de tâches (1) .
la source