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.
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 plusieurs contrôleurs de mémoire, avec des distances
différentes aux divers processeurs. La politique mémoire définit sur
quel noeud la mémoire est allouée pour ce processus.
Si flags est nul, la politique par défaut du processus appelant (fixée
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 noeuds (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
fixer 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 noeud associé à la politique sera stockée à
l’emplacement pointé par cet argument. maxnode spécifie le nombre
d’identifiants de noeuds qui peuvent être stockés dans nodemask,
c’est-à-dire, la valeur maximale de l’identifiant de noeud 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 noeud du noeud
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 noeud 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 noeud à
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, voir 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 (ou toute) 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 noeud 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.
CONFORMITÉ
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.23 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
Cette page de manuel a été traduite et mise à jour par Christophe
Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
francophone de traduction de Debian.
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> ».