NOM¶
get_mempolicy - Lire la politique mémoire NUMA d'un processus
SYNOPSIS¶
#include <numaif.h>
int get_mempolicy(int *mode, unsigned long *nodemask,
unsigned long maxnode, unsigned long addr,
unsigned long flags);
Effectuez l'édition des liens avec l'option -lnuma.
DESCRIPTION¶
get_mempolicy() lit la politique NUMA du processus appelant ou d'une
adresse en mémoire, selon la valeur de
flags.
Une machine NUMA a différents contrôleurs mémoire à
différentes distances de CPU particulières. La politique de la
mémoire définit à partir de quel nœud la mémoire pour
ce processus sera allouée.
Si
flags est nul, la politique par défaut du processus appelant
(définie par
set_mempolicy(2)) est renvoyée. La politique
renvoyée (
mode et
nodemask) peut être utilisée
avec
set_mempolicy(2) pour restaurer la politique du processus dans son
état au moment de l'appel à
get_mempolicy().
Si
flags indique
MPOL_F_MEMS_ALLOWED (disponible depuis
Linux 2.6.24), le paramètre
mode est ignoré et
l'ensemble des nœuds (mémoires) que le processus est autorisé
à utiliser dans les appels suivants à
mbind(2) ou
set_mempolicy(2) (en l'absence de
drapeaux de mode) est
renvoyé dans
nodemask. Il n'est pas permit de combiner
MPOL_F_MEMS_ALLOWED avec
MPOL_F_ADDR ou
MPOL_F_NODE.
Si
flags indique
MPOL_F_ADDR, l'information renvoyée concerne
la politique gouvernant la mémoire à l'adresse
addr. Cette
politique peut être différente de la politique par défaut du
processus si
mbind(2) ou une des fonctions d'aide décrites dans
numa(3) a été utilisée pour mettre en place une
politique pour la page contenant l'adresse
addr.
Si le paramètre
mode n'est pas NULL,
get_mempolicy() stockera
le mode de politique et tout
drapeau de mode optionnel de la politique
NUMA requise à l'endroit pointé par ce paramètre. Si
nodemask n'est pas NULL, le masque de nœud associé à la
politique sera stockée à l'emplacement pointé par cet argument.
maxnode spécifie le nombre d'identifiants de nœuds qui
peuvent être stockés dans
nodemask, c'est-à-dire, la
valeur maximale de l'identifiant de nœud plus un. La valeur indiquée
dans
maxnode est toujours arrondie à un multiple de
sizeof(unsigned long).
Si
flags indique à la fois
MPOL_F_NODE et
MPOL_F_ADDR,
get_mempolicy() renverra, à l'endroit pointé par
mode,
l'identifiant de nœud du nœud sur lequel l'adresse
addr est
allouée. Si aucune page n'a encore été allouée pour
l'adresse spécifiée,
get_mempolicy() allouera une page comme
si le processus avait réalisé un accès en lecture [chargement]
à cette adresse, et renverra l'identifiant du nœud où cette
page a été allouée.
Si
flags indique
MPOL_F_NODE mais pas
MPOL_F_ADDR et que la
politique actuelle est
MPOL_INTERLEAVE,
get_mempolicy() renverra
à l'endroit pointé par un paramètre
mode non nul
l'identifiant du prochain nœud à utiliser pour l'entrelacement des
pages internes du noyau allouées au nom du processus. Ces allocations
incluent des pages pour les fichiers de mémoire projetée dans les
plages de mémoire projetée du processus en utilisant l'appel
mmap(2) avec l'attribut
MAP_PRIVATE pour les accès en
lecture, et dans les plages de mémoire projetée avec l'attribut
MAP_SHARED pour tous les autres accès.
D'autres valeurs d'attribut sont réservées.
Pour un survol des politiques possibles, consultez
set_mempolicy(2).
VALEUR RENVOYÉE¶
get_mempolicy() renvoie 0 s'il réussit, ou -1 s'il échoue,
auquel cas
errno contient le code d'erreur.
ERREURS¶
- EFAULT
- Une partie de la plage mémoire spécifiée par
nodemask et maxnode pointe en dehors de votre espace
d'adressage accessible.
- EINVAL
- La valeur spécifiée par maxnode est
inférieure au nombre d'identifiants de nœud pris en charge par
le système. Ou flags spécifie des valeurs autres que
MPOL_F_NODE ou MPOL_F_ADDR ; ou flags
spécifie MPOL_F_ADDR et addr est NULL, ou flags
ne spécifie pas MPOL_F_ADDR et addr n'est pas NULL. Ou
flags spécifie MPOL_F_NODE mais pas MPOL_F_ADDR
et la politique actuelle du processus n'est pas MPOL_INTERLEAVE. Ou
flags spécifie MPOL_F_MEMS_ALLOWED avec
MPOL_F_ADDR ou MPOL_F_NODE. (Et il y a d'autres cas pour
EINVAL)
VERSIONS¶
L'appel système
get_mempolicy() a été ajouté au noyau
Linux dans la version 2.6.7.
Cet appel système est spécifique à Linux.
NOTES¶
Pour des informations sur la prise en charge par des bibliothèques,
consultez
numa(7).
VOIR AUSSI¶
getcpu(2),
mbind(2),
mmap(2),
set_mempolicy(2),
numa(3),
numa(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/>.
Christophe Blaess <
http://www.blaess.fr/christophe/> (1996-2003), Alain
Portal <
http://manpagesfr.free.fr/> (2003-2006). Julien Cristau 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> ».