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/[number]/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 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.
 
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
  
ftp://oss.sgi.com/www/projects/libnuma/download/
  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.
Aucune norme ne régi les interfaces NUMA.
VOIR AUSSI¶
get_mempolicy(2), 
mbind(2), 
move_pages(2),
  
set_mempolicy(2), 
numa(3), 
cpuset(7), 
numactl(8)
COLOPHON¶
Cette page fait partie de la publication 3.44 du projet 
man-pages Linux.
  Une description du projet et des instructions pour signaler des anomalies
  peuvent être trouvées à l'adresse
  <
http://www.kernel.org/doc/man-pages/>.
TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a
  <
http://po4a.alioth.debian.org/> par l'équipe de traduction
  francophone au sein du projet perkamon
  <
http://perkamon.alioth.debian.org/>.
Nicolas François et l'équipe francophone de traduction de
  Debian (2006-2009).
Veuillez signaler toute erreur de traduction en écrivant à
  <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
  paquet 
manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
  en utilisant la commande «  
man -L C
  <section>  <page_de_man> ».