bionic (2) move_pages.2.gz

Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       move_pages - Déplacer des pages individuelles d'un processus sur un autre nœud

SYNOPSIS

       #include <numaif.h>

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

       Effectuez l'édition des liens avec l'option -lnuma.

DESCRIPTION

       move_pages() déplace les pages indiqué du processus pid dans les nœuds 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 nœud. nodes peut aussi être NULL, auquel cas move_pages() ne déplace aucune page
       mais  renvoie  dans status le nœud 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 nœud 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 nœud 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 nœuds 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 nœuds 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  nœud
              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 nœuds 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  nœud)  viole  la  politique
       mémoire  établie  pour  les  adresses  indiquées  (voir 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 move_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)

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

       Alain Portal <http://manpagesfr.free.fr/> (2008).

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