Linux |
CentOS 5.3 |
|
set_mempolicy(2) |
set_mempolicy − Configurer la politique de la mémoire NUMA par défaut pour un processus et ces fils. |
#include <numaif.h> int set_mempolicy(int policy, unsigned long *nodemask, unsigned long maxnode); |
set_mempolicy() configure la politique de la mémoire NUMA du processus appelant à policy. 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 dans 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 ; de plus, on peut définir une politique pour des intervalles mémoires spécifiques en utilisant mbind(2). 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. Les poliques disponibles sont MPOL_DEFAULT, MPOL_BIND, MPOL_INTERLEAVE et MPOL_PREFERRED. Toutes les politiques excepté MPOL_DEFAULT nécessitent que l’appelant spécifie, dans le paramètre nodemask, les noeuds auxquels s’appliquent la politique. nodemask est un pointeur vers un champ de bits qui contient jusqu’à maxnode bits. La taille du champ de bits est arrondie au multiple supérieur de sizeof(unsigned long), mais le noyau n’utilisera que jusqu’à maxnode bits. La politique MPOL_DEFAULT est la politique 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 devrait être spécifié comme NULL. La politique MPOL_BIND est une politique stricte qui restreint l’allocation mémoire aux noeuds spécifiés dans nodemask. Il n’y aura pas d’allocations en d’autres noeuds. MPOL_INTERLEAVE entrelace les allocations aux noeuds spécifiés dans nodemask. Cela optimise la bande passante au lieu de la latence. Pour être efficace, la zone mémoire doit être relativement grande, au moins 1 Mo ou plus. MPOL_PREFERRED définit la politique comme étant celle du noeud préféré. Le noyau essayera d’allouer la mémoire dans le noeud préféré et se repliera sur d’autres noeuds s’il ne reste que peu de mémoire libre dans le noeud préféré. Seul le premier noeud dans nodemask est utilisé. Si aucun noeud n’est défini dans le masque, la mémoire est allouée dans le noeud de la CPU qui a déclenché l’allocation (comme avec MPOL_DEFAULT). La politique mémoire est héritée par les processus fils créés avec fork(2) ou clone(2). |
La politique du processus n’est pas mémorisée si la page est délogée. |
S’il réussit, set_mempolicy() renvoie 0 ; s’il échoue, il renvoie −1 et écrit errno en conséquence. |
Voir mbind(2). |
Cet appel est spécifique à Linux. |
mbind(2), get_mempolicy(2), numactl(8), numa(3) |
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 14 août 2006. 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. |
set_mempolicy(2) |