numa
Table des matières
Retour à l'index
NOM
numa - Panorama des architectures à mémoire non uniforme
DESCRIPTION
NUMA (« Non-Uniform Memory Access » : accès à la mémoire de façon non
uniforme) se réfère aux systèmes multiprocesseur dont la mémoire est divisé
en plusieurs nœuds mémoire. Le temps d'accès à un nœud mémoire dépend de la
localisation relative du CPU utilisateur et du nœud utilisé (à l'opposé des
systèmes multiprocesseur symétriques pour lesquels le temps d'accès à la
mémoire est le même quel que soit le CPU). Normalement, chaque CPU sur un
système NUMA a un nœud mémoire local pour lequel il peut accéder plus
rapidement au contenu, par rapport aux mémoires des nœuds locaux aux autres
CPU où à la mémoire sur un bus partagé par tous les CPU.
Appels système NUMA
Le noyau Linux implémente les appels système suivants liés aux NUM :
get_mempolicy(2), mbind(2), migrate_pages(2), move_pages(2) et
set_mempolicy(2). Cependant les applications devraient normalement
utiliser l'interface fournie par libnuma ; consultez « Prise en charge
par la bibliothèque » ci-dessous.
/proc/pid/numa_maps (depuis Linux 2.6.14)
Ce fichier affiche des informations concernant l'allocation et la politique
mémoire NUMA d'un processus.
Chaque ligne contient des informations concernant un intervalle mémoire
utilisé par un processus, indiquant, entre autre, la politique mémoire
effective pour cet intervalle mémoire et sur quels nœuds les pages ont été
allouées.
numa_maps est un fichier en lecture seule. Quand
/proc/pid/numa_maps est lu, le noyau analyse l'espace d'adressage
virtuel du processus et indique comment la mémoire est utilisée. Une ligne
est affichée pour chaque intervalle mémoire du processus.
Le premier champ de chaque ligne indique l'adresse de départ de l'intervalle
mémoire. Ce champ permet une corrélation avec le contenu du fichier
/proc/pid/maps, qui contient l'adresse de fin de l'intervalle et
d'autres informations, comme les permissions d'accès et le partage.
Le second champ indique la politique mémoire effective actuellement pour
l'intervalle mémoire. Notez que la politique effective n'est pas forcément
la politique installée par le processus pour cet intervalle mémoire. En
particulier, si le processus a installé une politique par défaut
(« default ») pour cet intervalle, la politique effective pour cet
intervalle sera la politique du processus, qui peut être ou ne pas être
« default ».
Le reste de la ligne contient des informations sur les pages allouées dans
l'intervalle mémoire, comme ceci :
- N<node>=<nombre_pages>
-
Le nombre de pages allouées sur le nœud
<node>. <nombre_pages> ne comprend que les pages
actuellement projetées par le processus. Un déplacement ou une libération de
page peut avoir temporairement déprojeté les pages associées avec cet
intervalle mémoire. Ces pages ne peuvent réapparaître que quand le processus
essaie de les référencer. Si l'intervalle mémoire représente une zone de
mémoire partagée ou une projection dans un fichier, d'autres processus
peuvent actuellement avoir d'autres pages projetées dans l'intervalle
mémoire associé.
- file=<nom_fichier>
-
Le fichier contenant l'intervalle mémoire. Si le fichier est une projection
privée, des accès en écriture peuvent avoir produit des pages COW
(« Copy-On-Write » : copie à l'écriture) dans cet intervalle mémoire. Ces
pages sont affichées comme des pages anonymes.
- heap
-
L'intervalle mémoire est utilisé pour le tas.
- stack
-
L'intervalle mémoire est utilisé pour la pile.
- huge
-
Gros intervalle mémoire. Le nombre de pages indiqué correspond à de grosses
pages, pas à des pages de taille usuelle.
- anon=<pages>
-
Le nombre de pages anonymes dans l'intervalle.
- dirty=<pages>
-
Nombre de pages sales.
- mapped=<pages>
-
Nombre total de pages projetées, n'étant ni sales (dirty), ni anonymes
(anon).
- mapmax=<compte>
-
Nombre maximal de processus projetant une même page (« mapcount »)
rencontrés lors de l'analyse. Ceci peut être utilisé comme indicateur du
degré de partage dans un intervalle mémoire donné.
- swapcache=<compte>
-
Nombre de pages qui ont une entrée associée sur un périphérique de partage.
- active=<pages>
-
Le nombre de pages sur la liste active. Ce champ n'est affiché que si ce
nombre diffère du nombre de pages dans l'intervalle. Ceci signifie que
certaines pages inactives existent dans l'intervalle mémoire, et qu'elles
pourront être retirées de la mémoire prochainement par le « swapper »
(processus de gestion des périphériques d'échange).
- writeback=<pages>
-
Nombre de pages qui sont actuellement en cours d'écriture sur le disque.
STANDARDS
Aucun.
NOTES
Les appels système NUMA de Linux et les interfaces /proc ne sont
disponibles que si le noyau est configuré et construit avec l'option
CONFIG_NUMA.
Prise en charge par la bibliothèque
Faire l'édition des liens avec -lnuma pour obtenir la définition des
appels système. libnuma et l'en-tête <numaif.h> sont
disponibles dans le paquet numactl.
Cependant, les applications ne devraient pas utiliser ces appels système
directement. À la place, l'interface de plus haut niveau fournie par les
fonctions numa(3) du paquet numactl est recommandée. Le paquet
numactl est disponible à l'adresse
Le paquet
est aussi inclus dans certaines distributions. Certaines distributions
inclues séparément la bibliothèque et les en-têtes pour le développement
dans le paquet numactl-devel.
VOIR AUSSI
get_mempolicy(2), mbind(2), move_pages(2), set_mempolicy(2),
numa(3), cpuset(7), numactl(8)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- DESCRIPTION
-
- Appels système NUMA
-
- /proc/pid/numa_maps (depuis Linux 2.6.14)
-
- STANDARDS
-
- NOTES
-
- Prise en charge par la bibliothèque
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:38 GMT, September 19, 2025