migrate_pages
Section: System Calls (2)
Updated: 4 décembre 2022
Index
Return to Main Contents
NOM
migrate_pages - Déplacer toutes les pages d'un processus sur un autre
ensemble de nœuds
BIBLIOTHÈQUE
Bibliothèque de règles NUMA (Non-Uniform Memory Access) (libnuma,
-lnuma)
SYNOPSIS
#include <numaif.h>
long migrate_pages(int pid, unsigned long maxnode,
const unsigned long *old_nodes,
const unsigned long *new_nodes);
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
-
Une partie de la plage mémoire spécifiée par old_nodes/new_nodes et
maxnode pointe en dehors de votre espace d'adressage accessible.
- EINVAL
-
La valeur indiquée par maxnode dépasse une limite imposée par le
noyau. Ou bien, old_nodes ou new_nodes spécifie un ou plusieurs
identifiants de nœud qui sont plus grands que l'identifiant maximum de nœud
pris en charge. Ou aucun des identifiants de nœuds spécifiés par
new_nodes ne sont connectés et autorisés par le contexte de cpuset actuel
du processus, ou aucun des nœuds spécifiés ne contient de mémoire.
- 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 dans
Linux 2.6.16.
STANDARDS
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 dans l'arborescence des sources du
noyau Linux
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>,
David Prévot <david@tilapin.org>
et
Jean-Philippe MENGUAL <jpmengual@debian.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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- VERSIONS
-
- STANDARDS
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 06:04:24 GMT, May 23, 2024