set_mempolicy   Début   Suivant   Sommaire   Préc.page.lue   Accueil
Section: Manuel du programmeur Linux (2)
Updated: 28 août 2007
Sommaire  



NOM   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
set_mempolicy - Configurer la politique de la mémoire NUMA par défaut pour un processus et ces fils  



SYNOPSIS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
#include <numaif.h>

int set_mempolicy(int mode, unsigned long *nodemask,
                  unsigned long maxnode);

Lier avec -lnuma
 



DESCRIPTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
set_mempolicy() définit la politique de la mémoire NUMA du processus appelant, qui consiste en un mode de politique et zéro ou plusieurs noeuds, aux valeurs spécifiées dans les arguments mode, nodemask et maxnode.

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 noeud la mémoire pour ce processus sera allouée.

Cet appel système définit la politique par défaut pour le processus. La politique de processus gouverne l'allocation de page dans l'espace adressable du processus en dehors des plages mémoire contrôlées par une politique plus spécifique définie par mbind(2). La politique de processus par défaut contrôle également l'allocation de toute page pour les fichiers projetés de mémoire, projetés en utilisant l'appel système mmap(2) avec l'attribut MAP_PRIVATE et qui ne sont seulement lus (chargés) par la tâche, et des fichiers projetés de mémoire, projetés en utilisant mmap(2) MAP_SHARED quel que soit le type d'accès. La polique n'est appliquée que lorsqu'une nouvelle page est allouée pour le processus. Pour la mémoire anonyme, cela est fait lorsque l'application accède pour la première fois à la page.

L'argument mode doit spécifier l'un des attributs parmi MPOL_DEFAULT, MPOL_BIND, MPOL_INTERLEAVE et MPOL_PREFERRED. Toutes les modes excepté MPOL_DEFAULT nécessitent que l'appelant spécifie, dans le paramètre nodemask, un ou plusieurs modes. nodemask pointe vers un masque de bits d'identifiants de noeuds qui contient jusqu'à maxnode bits. La taille du masque de bits est arrondie au multiple supérieur de sizeof(unsigned long), mais le noyau n'utilisera que jusqu'à maxnode bits. Une valeur NULL pour nodemask ou une valeur maxnode de zéro indique un ensemble vide de noeuds. Si la valeur de maxnode est zéro, l'argument nodemask est ignoré.

Le mode MPOL_DEFAULT est le mode par défaut et signifie que l'on alloue la mémoire localement, c'est-à-dire dans le noeud de la CPU qui a déclenché l'allocation. nodemask doit être spécifié comme NULL. Si le « noeud local » ne contient pas de mémoire, le système tentera d'allouer de la mémoire à partir d'un noeud « à proximité ».

Le mode MPOL_BIND définit une politique stricte qui restreint l'allocation mémoire aux noeuds spécifiés dans nodemask. Si nodemask indique plus d'un noeud, les allocations de pages se feront d'abord à partir du noeud dont l'identifiant numérique est le plus petit jusqu'à ce que ce noeud ne contienne plus de mémoire libre. Les allocations se feront ensuite à partir du node dont l'identifiant est le prochain plus grand spécifié dans nodemask et ainsi de suite jusqu'à ce que plus un seul noeud indiqué ne contienne de mémoire libre. Il n'y aura pas d'allocation de pages à partir de noeuds non indiqués dans nodemask.

MPOL_INTERLEAVE entrelace les allocations de pages à travers les noeuds spécifiés dans nodemask dans l'ordre de l'identifiant numérique de noeud. Cela optimise la bande passante au lieu de la latence en étalant les accès pages et mémoires à ces pages à travers plusieurs noeuds. Toutefois, les accès à une seule page seront limités à la bande passante d'un seul noeud.

Le mode MPOL_PREFERRED définit le noeud préféré pour l'allocation. Le noyau essayera d'allouer des pages d'abord à partir de ce noeud et se repliera sur des noeuds voisins s'il ne reste que peu de mémoire libre sur le noeud préféré. Si nodemask spécifie plus d'un identifiant de noeud, le premier noeud du masque sera choisi comme le noeud préféré. Si les arguments nodemask et maxnode spécifient l'ensemble vide, la mémoire est allouée sur le noeud de la CPU qui a déclenché l'allocation (comme pour MPOL_DEFAULT).

La politique mémoire de processus est préservée au travers d'un execve(2), et est héritée par les processus fils créés avec fork(2) ou clone(2).  




VALEUR RENVOYÉE   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
S'il réussit, set_mempolicy() renvoie 0 ; s'il échoue, il renvoie -1 et écrit errno en conséquence.  



ERREURS   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
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
mode n'est pas valide. Ou, mode est MPOL_DEFAULT est nodemask n'est pas vide, ou mode est MPOL_BIND ou MPOL_INTERLEAVE et nodemask est vide. Ou, maxnode specifies more than a page worth of bits. Ou, nodemask spécifie un ou plusieurs identifiants de noeud qui sont plus grands que l'identifiant maximum de noeud pris en charge, ou qui ne sont pas autorisés dans le contexte de la tâche appelante. Ou aucun des identifiants de noeuds spécifiés par nodemask ne sont connectés, ou aucun des noeuds spécifiés ne contient de mémoire.
ENOMEM
Manque de mémoire.
 



CONFORMITÉ   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Cet appel est spécifique à Linux.  



NOTES   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
La politique du processus n'est pas mémorisée si la page est délogée. Lorsqu'une telle page est réimportée en mémoire, elle utilisera la politique du processus ou de la plage mémoire qui était effective au moment où la page a été allouée.  



Versions et prise en charge bibliothèque   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
Voir mbind(2).  



VOIR AUSSI   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil
mbind(2), mmap(2), get_mempolicy(2), numactl(8), numa(3)  



TRADUCTION   Début   Précédent   Suivant   Sommaire   Préc.page.lue   Accueil

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 21 juillet 2006 et révisée le 23 décembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 set_mempolicy ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


 



Sommaire   Début   Suivant   Sommaire   Préc.page.lue   Accueil
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
NOTES
Versions et prise en charge bibliothèque
VOIR AUSSI
TRADUCTION

Table des mots clés   Début   Suivant   Sommaire   Préc.page.lue   Accueil
EFAULTERREURS
EINVALERREURS
ENOMEMERREURS



Ce document a été créé par man2html suivi de man2html.pl, le 17/10/2008 17:51:22, en utilisant les pages de 'man'.
 

Valid HTML 4.01 Transitional