.\" -*- coding: UTF-8 -*- .\" Copyright 2003,2004 Andi Kleen, SuSE Labs. .\" and Copyright 2007 Lee Schermerhorn, Hewlett Packard .\" .\" %%%LICENSE_START(VERBATIM_PROF) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 2006-02-03, mtk, substantial wording changes and other improvements .\" 2007-08-27, Lee Schermerhorn .\" more precise specification of behavior. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SET_MEMPOLICY 2 "21 décembre 2020" Linux "Manuel du programmeur Linux" .SH NOM set_mempolicy \- Configurer la politique de la mémoire NUMA par défaut pour un thread et ses enfants .SH SYNOPSIS .nf \fB#include \fP .PP \fBlong set_mempolicy(int \fP\fImode\fP\fB, const unsigned long *\fP\fInodemask\fP\fB,\fP \fB unsigned long \fP\fImaxnode\fP\fB);\fP .PP Effectuez l'édition des liens avec l'option \fI\-lnuma\fP. .fi .SH DESCRIPTION \fBset_mempolicy\fP() définit la politique de la mémoire NUMA du thread appelant, qui consiste en un mode de politique et zéro ou plusieurs nœuds, aux valeurs spécifiées dans les arguments \fImode\fP, \fInodemask\fP et \fImaxnode\fP. .PP Une machine NUMA a différents contrôleurs mémoire à différentes distances des processeurs particuliers. La politique de la mémoire définit le nœud à partir duquel la mémoire est allouée pour le thread. .PP Cet appel système définit la politique par défaut pour le thread. La politique de thread gouverne l'allocation de page dans l'espace adressable du processus en dehors des plages mémoire contrôlées par une politique plus spécifique définie par \fBmbind\fP(2). La politique de thread par défaut contrôle également l'allocation de toute page pour les fichiers projetés en mémoire en utilisant l'appel système \fBmmap\fP(2) avec l'attribut \fBMAP_PRIVATE\fP, qui n’est lue (chargée) que par le thread, et pour les fichiers projetés en mémoire en utilisant l'appel \fBmmap\fP(2) avec l'attribut \fBMAP_SHARED\fP, quel que soit le type d'accès. La politique ne s'applique que lorsqu'une nouvelle page est allouée pour le thread. Pour la mémoire anonyme, cela est fait lorsque la page est modifiée pour la première fois par le thread. .PP Le paramètre \fImode\fP doit spécifier l'un des attributs parmi \fBMPOL_DEFAULT\fP, \fBMPOL_BIND\fP, \fBMPOL_INTERLEAVE\fP, \fBMPOL_PREFERRED\fP et \fBMPOL_LOCAL\fP (qui sont décrits en détails ci\-dessous). Toutes les modes de politique excepté \fBMPOL_DEFAULT\fP nécessitent que l'appelant spécifie, dans le paramètre \fInodemask\fP, le ou les nœuds auxquels s'appliquent le mode. .PP L'argument \fImode\fP peut aussi contenir des attributs optionnels. Les valeurs possibles sont\ : .TP \fBMPOL_F_STATIC_NODES\fP (depuis Linux 2.6.26) Une valeur non vide de \fInodemask\fP indique des identifiants de nœuds physiques. Linux ne va pas recalculer le \fInodemask\fP quand le processus est déplacé vers un contexte de processeurs différent, ni quand l'ensemble des nœuds autorisés par le contexte du processus actuel est modifié. .TP \fBMPOL_F_RELATIVE_NODES\fP (depuis Linux 2.6.26) Un paramètre \fInodemask\fP non vide indique les identifiants des nœuds relatifs à l'ensemble des identifiants de nœuds autorisés pour le contexte de l'ensemble de processeurs en cours pour le processus. .PP \fInodemask\fP pointe vers un masque de bits d'identifiants de nœuds qui contient jusqu'à \fImaxnode\fP bits. La taille du masque de bits est arrondie au multiple supérieur de \fIsizeof(unsigned long)\fP, mais le noyau n'utilisera que jusqu'à \fImaxnode\fP bits. Une valeur NULL pour \fInodemask\fP ou une valeur \fImaxnode\fP de zéro indique un ensemble vide de nœuds. Si la valeur de \fImaxnode\fP est zéro, l'argument \fInodemask\fP est ignoré. .PP Quand une valeur de \fInodemask\fP est nécessaire, elle doit contenir au moins un nœud actuellement disponible et autorisé par le contexte du processus actuel (à moins que l'attribut \fBMPOL_F_STATIC_NODES\fP ne soit spécifié), et qui contient de la mémoire. Si l'attribut \fBMPOL_F_STATIC_NODES\fP est mis dans \fImode\fP et si un \fInodemask\fP nécessaire ne contient aucun nœud autorisé par le contexte du processus actuel, la politique pour la mémoire est forcée à allocation locale (\fIlocal allocation\fP). La politique sera réellement modifiée, sauf si le contexte du processus actuel contient au moins un des nœuds spécifiés par \fInodemask\fP. .PP L'argument \fImode\fP doit inclure une des valeurs suivantes\ : .TP \fBMPOL_DEFAULT\fP Ce mode indique que toute politique de mémoire du thread autre que celle par défaut doit être supprimée, afin que la politique de mémoire se «\ rabatte\ » sur la politique par défaut du système. La politique par défaut du système est «\ local allocation\ », c'est\-à\-dire allouer la mémoire sur le nœud du processeur qui a déclenché l'allocation. \fInodemask\fP doit être spécifié comme NULL. Si le «\ nœud local\ » ne contient pas de mémoire libre, le système tentera d'allouer de la mémoire à partir d'un nœud «\ à proximité\ ». .TP \fBMPOL_BIND\fP Ce mode définit une politique stricte qui restreint l'allocation mémoire aux nœuds spécifiés dans \fInodemask\fP. Si \fInodemask\fP indique plus d'un nœud, les allocations de pages se feront d'abord à partir du nœud dont l'identifiant numérique est le plus petit jusqu'à ce que ce nœud ne contienne plus de mémoire libre. Les allocations se feront ensuite à partir du nœud dont l'identifiant est le prochain plus grand spécifié dans \fInodemask\fP et ainsi de suite jusqu'à ce que plus un seul nœud indiqué ne contienne de mémoire libre. Il n'y aura pas d'allocation de pages à partir de nœuds non indiqués dans \fInodemask\fP. .TP \fBMPOL_INTERLEAVE\fP .\" NOTE: the following sentence doesn't make sense in the context .\" of set_mempolicy() -- no memory area specified. .\" To be effective the memory area should be fairly large, .\" at least 1 MB or bigger. Ce mode entrelace les allocations de pages à travers les nœuds spécifiés dans \fInodemask\fP dans l'ordre de l'identifiant numérique de nœud. Cela optimise la bande passante au lieu de la latence en étalant les accès pages et mémoires à ces pages à travers plusieurs nœuds. Toutefois, les accès à une seule page seront limités à la bande passante mémoire d'un seul nœud. .TP \fBMPOL_PREFERRED\fP Ce mode définit le nœud préféré pour l'allocation. Le noyau essaiera d'allouer des pages d'abord à partir de ce nœud et se repliera sur des nœuds voisins s'il ne reste que peu de mémoire libre sur le nœud préféré. Si \fInodemask\fP spécifie plus d'un identifiant de nœud, le premier nœud du masque sera choisi comme le nœud préféré. Si les arguments \fInodemask\fP et \fImaxnode\fP spécifient l'ensemble vide, la politique indique «\ local allocation\ » (comme la politique par défaut du système abordée ci\-dessus). .TP \fBMPOL_LOCAL\fP (depuis Linux 3.8) .\" commit 479e2802d09f1e18a97262c4c6f8f17ae5884bd8 .\" commit f2a07f40dbc603c15f8b06e6ec7f768af67b424f Ce mode indique «\ local allocation\ »\ ; la mémoire est allouée sur le nœud du processeur qui a déclenché l'allocation (le «\ local node\ »). Les paramètres \fInodemask\fP et \fImaxnode\fP doivent indiquer l'ensemble vide. Si le «\ local node\ » est faible en mémoire, le noyau essaiera d'allouer de la mémoire à partir d'autres nœuds. Le noyau allouera de la mémoire à partir du «\ local node\ » à chaque fois que de la mémoire dans ce nœud sera disponible. Si le «\ local node\ » n'est pas autorisé par le contexte de l’ensemble de processeurs actuel du processus, le noyau essaiera d'allouer de la mémoire à partir d'autres nœuds. Le noyau allouera de la mémoire à partir du «\ local node\ » à chaque fois que ce sera autorisé par le contexte de l’ensemble de processeurs actuel du processus. .PP La politique mémoire de thread est préservée au travers d'un \fBexecve\fP(2) et est récupérée par les processus enfant créés avec \fBfork\fP(2) ou \fBclone\fP(2). .SH "VALEUR RENVOYÉE" S'il réussit, \fBset_mempolicy\fP() renvoie \fB0\fP\ ; s'il échoue, il renvoie \fB\-1\fP et écrit \fIerrno\fP en conséquence. .SH ERREURS .TP \fBEFAULT\fP Une partie de la plage mémoire spécifiée par \fInodemask\fP et \fImaxnode\fP pointe en dehors de l’espace d'adressage accessible. .TP \fBEINVAL\fP \fImode\fP n'est pas valable. Ou, \fImode\fP est \fBMPOL_DEFAULT\fP et \fInodemask\fP n'est pas vide, ou \fImode\fP est \fBMPOL_BIND\fP ou \fBMPOL_INTERLEAVE\fP et \fInodemask\fP est vide. Ou, \fImaxnode\fP spécifie plus d'une page de bits. Ou, \fInodemask\fP spécifie un ou plusieurs identifiants de nœud qui sont plus grands que l'identifiant maximal de nœud pris en charge. Ou aucun des identifiants de nœuds spécifiés par \fInodemask\fP ne sont disponibles et autorisés par le contexte en cours d’ensemble de processeurs du processus ou aucun des nœuds spécifiés ne contient de mémoire. Ou l’argument \fImode\fP spécifie à la fois \fBMPOL_F_STATIC_NODES\fP et \fBMPOL_F_RELATIVE_NODES\fP. .TP \fBENOMEM\fP La mémoire disponible du noyau n'était pas suffisante. .SH VERSIONS L'appel système \fBset_mempolicy\fP() a été ajouté au noyau Linux dans la version 2.6.7. .SH CONFORMITÉ Cet appel système est spécifique à Linux. .SH NOTES La politique de mémoire n'est pas mémorisée si la page est transférée. Lorsqu'une telle page est réimportée en mémoire, elle utilisera la politique du thread ou de la plage mémoire qui était effective au moment où la page est allouée. .PP Pour des informations sur la prise en charge des bibliothèques, consultez \fBnuma\fP(7). .SH "VOIR AUSSI" \fBget_mempolicy\fP(2), \fBgetcpu\fP(2), \fBmbind\fP(2), \fBmmap\fP(2), \fBnuma\fP(3), \fBcpuset\fP(7), \fBnuma\fP(7), \fBnumactl\fP(8) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP 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/. .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 .