NOM¶
migrate_pages - Déplacer toutes les pages d'un processus sur un autre
ensemble de nœuds
SYNOPSIS¶
#include <numaif.h>
long migrate_pages(int pid, unsigned long maxnode,
const unsigned long *old_nodes,
const unsigned long *new_nodes);
Effectuez l'édition des liens avec l'option
-lnuma.
DESCRIPTION¶
migrate_pages() essaye de déplacer toutes les pages du processus
pid qui sont sur les nœuds de mémoire
old_nodes
vers les nœuds de mémoire
new_nodes. Les pages qui ne
sont dans aucun nœud de
old_nodes ne seront pas
déplacées. Le noyau maintient autant que possible les relations
topologiques relatives à l'intérieur de
old_nodes durant
le déplacement vers
new_nodes.
Les arguments
old_nodes et
new_nodes sont des pointeurs vers des
masques de bits de numéros de nœuds, avec jusqu'à
maxnode bits dans chaque masque. Ces masques sont maintenus comme des
tableaux d'entiers longs non signés (
unsigned long) ;
dans le dernier entier long, les bits après ceux
spécifiés par
maxnode sont ignorés. L'argument
maxnode vaut un plus le numéro maximal de nœud dans le
masque de bit (qui a donc la même signification que dans
mbind(2), mais est différent de
select(2)).
L'argument
pid est l'identifiant du processus dont les pages doivent
être déplacées. Pour déplacer les pages dans un
autres processus, l'appelant doit être privilégié (
CAP_SYS_NICE) ou l'identifiant utilisateur réel ou effectif du
processus appelant doit correspondre à l'identifiant utilisateur
réel ou sauvé du processus cible. Si
pid vaut 0, alors
migrate_pages() déplace les pages du processus appelant.
Les pages partagées avec un autre processus ne seront
déplacées que si le processus appelant possède le
privilège
CAP_SYS_NICE.
VALEUR RENVOYÉE¶
S'il réussit,
migrate_pages() renvoie le nombre de pages qui n'ont
pas pu être déplacées (c'est-à-dire qu'un code de
retour de zéro signifie que toutes les pages ont été
déplacés correctement). En cas d'erreur, il renvoie -1 et
remplit
errno avec la valeur d'erreur.
ERREURS¶
- EPERM
- Un privilège insuffisant (CAP_SYS_NICE) pour déplacer
les pages du processus spécifié par pid ou pour
accéder aux nœuds de destination.
- ESRCH
- Il n'y a pas de processus correspondant à pid.
VERSIONS¶
L'appel système
migrate_pages() est apparu pour la première
fois sous Linux avec le noyau 2.6.16.
Cet appel système est spécifique à Linux.
NOTES¶
Pour des informations sur la prise en charge par des bibliothèques,
consultez
numa(7).
Utilisez
get_mempolicy(2) avec le drapeau
MPOL_F_MEMS_ALLOWED pour
obtenir l'ensemble des nœuds autorisés par l'ensemble de
processeurs du processus appelant. Notez que cette information peut changer
à tout instant d'une fait d'une reconfiguration manuelle ou automatique
de l'ensemble de processeurs.
L'utilisation de
migrate_pages() peut causer des pages dont l'emplacement
(le nœud) viole la politique mémoire établie pour les
adresses indiquées (consultez
mbind(2)) ou pour le processus
indiqué (consultez
set_mempolicy(2)). En d'autres termes, la
politique mémoire ne restreint pas les nœuds de destination
utilisés par
migrate_pages().
L'en-tête
<numaif.h> n'est pas inclus dans la glibc, mais
nécessite l'installation de
libnuma-devel (ce nom peut varier
suivant les distributions).
VOIR AUSSI¶
get_mempolicy(2),
mbind(2),
set_mempolicy(2),
numa(3),
numa_maps(5),
cpuset(7),
numa(7),
migratepages(8),
numastat(8)
Documentation/vm/page_migration dans les sources du noyau Linux
COLOPHON¶
Cette page fait partie de la publication 3.65 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/>.
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> ».