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),
numa_stat(8)
Documentation/vm/page_migration dans les sources du noyau Linux
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/>.
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> ».