Scroll to navigation

MIGRATE_PAGES(2) Manuel du programmeur Linux MIGRATE_PAGES(2)

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

EFAULT
Part or all of the memory range specified by old_nodes/new_nodes and maxnode points outside your accessible address space.
EINVAL
The value specified by maxnode exceeds a kernel-imposed limit. Or, old_nodes or new_nodes specifies one or more node IDs that are greater than the maximum supported node ID. Or, none of the node IDs specified by new_nodes are on-line and allowed by the process's current cpuset context, or none of the specified nodes contain memory.
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.

CONFORMITÉ

Cet appel système est spécifique à Linux.

NOTES

Pour des informations sur la prise en charge 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.rst in the Linux kernel source tree

COLOPHON

Cette page fait partie de la publication 5.07 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french@lists.debian.org>.

6 mars 2019 Linux