.\" -*- coding: UTF-8 -*- .\" SPDX-License-Identifier: Linux-man-pages-copyleft-2-para .\" .\" This manpage is Copyright (C) 2006 Silicon Graphics, Inc. .\" Christoph Lameter .\" .\" FIXME Should programs normally be using move_pages() directly, or should .\" they rather be using interfaces in the numactl package? .\" (e.g., compare with recommendation in mbind(2)). .\" Does this page need to give advice on this topic? .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH move_pages 2 "15 juillet 2023" "Pages du manuel de Linux 6.05.01" .SH NOM move_pages \- Déplacer des pages individuelles d'un processus sur un autre nœud .SH BIBLIOTHÈQUE Bibliothèque de règles NUMA (Non\-Uniform Memory Access) (\fIlibnuma\fP, \fI\-lnuma\fP) .SH SYNOPSIS .nf \fB#include \fP .PP \fBlong move_pages(int \fP\fIpid\fP\fB, unsigned long \fP\fIcount\fP\fB, void *\fP\fIpages\fP\fB[.\fP\fIcount\fP\fB],\fP \fB const int \fP\fInodes\fP\fB[.\fP\fIcount\fP\fB], int \fP\fIstatus\fP\fB[.\fP\fIcount\fP\fB], int \fP\fIflags\fP\fB);\fP .fi .SH DESCRIPTION \fBmove_pages\fP() déplace les \fIpages\fP indiquées du processus \fIpid\fP dans les nœuds de la mémoire indiqués par \fInodes\fP. Le résultat du déplacement est reflété dans \fIstatus\fP. Les drapeaux \fIflags\fP indiquent des contraintes sur les pages à déplacer. .PP \fIpid\fP est l'identifiant du processus dans lequel les pages doivent être déplacées. Si \fIpid\fP est \fB0\fP, \fBmove_pages\fP() déplace des pages du processus appelant. .PP Déplacer des pages dans un autre processus exige les privilèges suivants\ : .IP \- 3 Jusquà Linux\ 4.12 compris\ : l'appelant doit être privilégié (\fBCAP_SYS_NICE\fP) ou l'identifiant utilisateur réel ou effectif du processus appelant doit correspondre à l'identifiant utilisateur, réel ou sauvegardé, du processus cible. .IP \- .\" commit 197e7e521384a23b9e585178f3f11c9fa08274b9 Les anciennes règles autorisaient l'appelant à voir plusieurs choix d'adresse virtuelle effectués par le noyau, ce qui pouvait faire échouer la distribution aléatoire de l'espace d'adressage (ASLR) pour un processus appartenant au même identifiant utilisateur que l'appelant, ces règles ont été modifiées depuis Linux 4.13. Depuis Linux 4.13, ce droit est géré par une vérification du mode d'accès ptrace \fBPTRACE_MODE_READ_REALCREDS\fP vis\-à\-vis du processus cible\ ; voir \fBptrace\fP(2). .PP \fIcount\fP est le nombre de pages à déplacer. Il définit la taille des trois tableaux \fIpages\fP, \fInodes\fP et \fIstatus\fP. .PP .\" FIXME Describe the result if pointers in the 'pages' array are .\" not aligned to page boundaries \fIpages\fP 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 \fIpid\fP. .PP \fInodes\fP 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. \fInodes\fP peut aussi être NULL, auquel cas \fBmove_pages\fP() ne déplace aucune page mais renvoie dans \fIstatus\fP 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. .PP \fIstatus\fP est un tableau d'entiers qui renvoie l'état de chaque page. Le tableau ne contient des valeurs correctes que si \fBmove_pages\fP() n'a pas renvoyé d'erreur. La pré\-initialisation du tableau sur une valeur qui ne peut pas représenter un inœud NUMA réel ou une erreur valable de tableau d'état pourraient aider à identifier les pages ayant été migrées. .PP \fIflags\fP indique quels types de page déplacer. \fBMPOL_MF_MOVE\fP signifie que seules les pages qui ne peuvent être utilisées qu'exclusivement par le processus sont à déplacer. \fBMPOL_MF_MOVE_ALL\fP signifie que les pages partagées entre plusieurs processus peuvent aussi être déplacées. Le processus doit être privilégié (\fBCAP_SYS_NICE\fP) pour utiliser \fBMPOL_MF_MOVE_ALL\fP. .SS "États des pages dans le tableau d’état" Les valeurs suivantes peuvent être renvoyées dans chaque élément du tableau \fIstatus\fP. .TP \fB0..MAX_NUMNODES\fP Indication du nœud sur lequel la page réside. .TP \fB\-EACCES\fP La page est projetée par plusieurs processus et ne peut être déplacée que si \fBMPOL_MF_MOVE_ALL\fP est utilisé. .TP \fB\-EBUSY\fP La page est actuellement occupée et ne peut être déplacée. Essayez plus tard. Cela 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. .TP \fB\-EFAULT\fP C'est la page de base (page zéro) ou la zone mémoire n'est pas projetée par le processus. .TP \fB\-EIO\fP Impossible de réécrire dans la mémoire une page. La page doit être réécrite pour la déplacer puisque la page est modifiée (dirty) et que le système de fichiers ne fournit pas de fonction de migration qui permettrait le déplacement de pages modifiées (dirty). .TP \fB\-EINVAL\fP Une page modifiée (dirty) 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 en mémoire . .TP \fB\-ENOENT\fP La page n'est pas présente. .TP \fB\-ENOMEM\fP Impossible d'allouer de la mémoire sur le nœud cible. .SH "VALEUR RENVOYÉE" .\" FIXME . Is the following quite true: does the wrapper in numactl .\" do the right thing? S'il réussit, \fBmove_pages\fP() renvoie zéro. En cas d'erreur, il renvoie \fB\-1\fP et remplit \fIerrno\fP pour indiquer l'erreur. Si une valeur positive est renvoyée, il s'agit du nombre de pages non migrées. .SH ERREURS .TP \fBValeur positive\fP .\" commit a49bd4d7163707de377aee062f17befef6da891b Le nombre de pages non migrées si elles ne provenaient pas de raisons non fatales (depuis Linux\ 4.17). .TP \fBE2BIG\fP .\" commit 3140a2273009c01c27d316f35ab76a37e105fdd8 Trop de pages à déplacer. Depuis Linux\ 2.6.29, le noyau ne génère plus cette erreur. .TP \fBEACCES\fP .\" FIXME Clarify "current cpuset" in the description of the EACCES error. .\" Is that the cpuset of the caller or the target? Un des nœuds cible n'est pas autorisé dans l'ensemble de processeurs en cours. .TP \fBEFAULT\fP Impossible d'accéder à un tableau en paramètre. .TP \fBEINVAL\fP Un drapeau autre que \fBMPOL_MF_MOVE\fP ou \fBMPOL_MF_MOVE_ALL\fP a été indiqué ou on a essayé de déplacer des pages d'un thread noyau. .TP \fBENODEV\fP Un des nœuds cibles n'est pas connecté. .TP \fBEPERM\fP L'appelant a indiqué \fBMPOL_MF_MOVE_ALL\fP sans les privilèges suffisants (\fBCAP_SYS_NICE\fP). 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 (\fBCAP_SYS_NICE\fP). .TP \fBESRCH\fP Le processus n'existe pas. .SH STANDARDS Linux. .SH HISTORIQUE Linux 2.6.18 .SH NOTES Pour des informations sur la prise en charge des bibliothèques, consultez \fBnuma\fP(7). .PP .\" FIXME Clarify "current cpuset". Is that the cpuset of the caller .\" or the target? Utilisez \fBget_mempolicy\fP(2) avec le drapeau \fBMPOL_F_MEMS_ALLOWED\fP pour obtenir l'ensemble des nœuds autorisés par l'ensemble de processeurs courant. Notez que cette information peut changer à tout instant du fait d'une reconfiguration manuelle ou automatique de l'ensemble de processeurs. .PP L'utilisation de cette fonction peut aboutir à des pages dont l'emplacement (le nœud) viole la politique mémoire établie pour les adresses indiquées (voir \fBmbind\fP(2)) ou pour le processus indiqué (consultez \fBset_mempolicy\fP(2)). En d'autres termes, la politique mémoire ne restreint pas les nœuds de destination utilisés par \fBmove_pages\fP(). .PP L'en\-tête \fI\fP n'est pas inclus dans la glibc, mais nécessite l'installation de \fIlibnuma\-devel\fP (ce nom peut varier suivant les distributions). .SH "VOIR AUSSI" \fBget_mempolicy\fP(2), \fBmbind\fP(2), \fBset_mempolicy\fP(2), \fBnuma\fP(3), \fBnuma_maps\fP(5), \fBcpuset\fP(7), \fBnuma\fP(7), \fBmigratepages\fP(8), \fBnumastat\fP(8) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .