Loading

NOM

       move_pages  -  Déplacer  des  pages individuelles d’un processus sur un
       autre noeud

SYNOPSIS

       #include <numaif.h>

       long move_pages(int pid, unsigned long count, void **pages,
                       const int *nodes, int *status, int flags);

       move_pages() déplace les pages indiqué du processus pid dans les noeuds
       indiqués par nodes. Le résultat du déplacement est reflété dans status.
       Les drapeaux flags indiquent des contraintes sur les pages à  déplacer.

       pid  est  l’identifiant du processus dans lequel des pages doivent être
       déplacées. Pour déplacer des 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
       move_pages() déplace des pages du processus appelant.

       count est le nombre de pages à déplacer. Il définit la taille des trois
       tableaux pages, nodes et status.

       pages  est  un  tableau  de  pointeurs  vers  des pages à déplacer. Ces
       pointeurs doivent être alignés sur des limites de pages.  Les  adresses
       sont  indiquées comme elles sont vues par le processus indiqué par pid.

       nodes est un tableau d’entiers qui indiquent  les  emplacements  voulus
       pour  chaque  page.  Chaque  élément du tableau est un numéro de noeud.
       nodes peut aussi être NULL, auquel cas move_pages() ne  déplace  aucune
       page   mais  renvoie  dans  status  le  noeud  où  chaque  page  réside
       actuellement. Obtenir l’état de chaque page peut être  nécessaire  pour
       trouver les pages qui doivent être déplacées.

       status  est  un tableau d’entiers qui renvoie l’état de chaque page. Le
       tableau ne contient des valeurs correctes que si move_pages()  n’a  pas
       renvoyé d’erreur.

       flags  indique  quels types de page déplacer. MPOL_MF_MOVE signifie que
       seules les pages qui ne peuvent être utilisées qu’exclusivement par  le
       processus  sont  à  déplacer.  MPOL_MF_MOVE_ALL  signifie que les pages
       partagées entre plusieurs processus peuvent  aussi  être  déplacée.  Le
       processus   doit   être   privilégié   (CAP_SYS_NICE)   pour   utiliser
       MPOL_MF_MOVE_ALL.

États des pages dans le tableau array

       Les valeurs suivantes peuvent être renvoyées  dans  chaque  élément  du
       tableau status.

       0..MAX_NUMNODES
              Indique le noeud sur lequel la page réside.

       -EACCES
              La  page  est  projetée  par plusieurs processus et ne peut être
              déplacée que si MPOL_MF_MOVE_ALL est utilisé.

       -EBUSY La page est actuellement  occupée  et  ne  peut  être  déplacée.
              Essayez  plus tard. Ceci arrive si la page est utilisée pour des
              entrées/sorties ou si une autre partie  du  noyau  conserve  une
              référence sur la page.

       -EFAULT
              C’est  une  page nulle ou la zone mémoire n’est pas projetée par
              le processus.

       -EIO   Impossible de ré-écrire une page. La page  doit  être  ré-écrite
              pour  la  déplacer puisque la page est sale et que le système de
              fichiers ne fournit pas de fonction de migration qui permettrait
              le déplacement de pages sales.

       -EINVAL
              Une  page sale ne peut pas être déplacée. Le système de fichiers
              ne fournit  pas  de  fonction  de  déplacement  et  n’a  pas  la
              possibilité de ré-écrire la page.

       -ENOENT
              La page n’est pas présente.

       -ENOMEM
              Impossible d’allouer de la mémoire sur le noeud cible.

VALEUR RENVOYÉE

       S’il réussit, move_pages() renvoie zéro. En cas d’erreur, il renvoie -1
       et remplit errno avec la valeur d’erreur.

ERREURS

       E2BIG  Trop de pages à déplacer.

       EACCES Un des noeuds cibles n’est  pas  autorisés  dans  l’ensemble  de
              processeurs en cours.

       EFAULT Impossible d’accéder à un tableau en paramètre.

       EINVAL Un  drapeau  autre  que  MPOL_MF_MOVE  ou MPOL_MF_MOVE_ALL a été
              indiqué ou on a essayé de déplacer des pages d’un thread  noyau.

       ENODEV Un des noeuds cibles n’est pas connecté.

       ENOENT Aucune  page nécessitant d’être déplacée n’a été trouvée. Toutes
              les pages sont déjà sur  le  noeud  cible,  absentes,  avec  une
              adresse  non  valable  ou  ne  pouvaient  être  déplacées  parce
              qu’elles étaient projetées par plusieurs processus.

       EPERM  L’appelant  a  indiqué  MPOL_MF_MOVE_ALL  sans  les   privilèges
              suffisants  (CAP_SYS_NICE).  Ou  bien  l’appelant  a  essayé  de
              déplacer  des  pages  d’un  processus  appartenant  à  un  autre
              utilisateur mais n’était pas autorisé à le faire (CAP_SYS_NICE).

       ESRCH  Le processus n’existe pas.

VERSIONS

       move_pages() est apparu pour la première fois sous Linux avec le  noyau
       2.6.18.

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).

       Utilisez get_mempolicy(2)  avec  le  drapeau  MPOL_F_MEMS_ALLOWED  pour
       obtenir  l’ensemble  des noeuds autorisés par l’ensemble de processeurs
       courant. 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  cette  fonction   peut   causer   des   pages   dont
       l’emplacement  (le  noeud)  viole la politique mémoire établie pour les
       adresses indiquées (voir mbind(2)) ou pour le processus  indiqué  (voir
       set_mempolicy(2)).   En   d’autres  termes,  la  politique  mémoire  ne
       restreint pas les noeuds de destination utilisés par move_pages().

VOIR AUSSI

       get_mempolicy(2), mbind(2),  set_mempolicy(2),  numa(3),  numa_maps(5),
       cpuset(7), numa(7), migratepages(8), numa_stat(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  par  Alain  Portal  <aportal  AT
       univ-montp2   DOT   fr>   en   2008,   et   mise   à   disposition  sur
       http://manpagesfr.free.fr/.

       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> ».