| set_mempolicy(2) | System Calls Manual | set_mempolicy(2) |
set_mempolicy - Configurer la politique de la mémoire NUMA par défaut pour un thread et ses enfants
Bibliothèque de règles NUMA (Non-Uniform Memory Access) (libnuma, -lnuma)
#include <numaif.h>
long set_mempolicy(int mode, const unsigned long *nodemask,
unsigned long maxnode);
set_mempolicy() 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 mode, nodemask et maxnode.
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.
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 mbind(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 mmap(2) avec l’attribut MAP_PRIVATE, qui n’est lue (chargée) que par le thread, et pour les fichiers projetés en mémoire en utilisant l’appel mmap(2) avec l’attribut MAP_SHARED, 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.
Le paramètre mode doit spécifier l’un des attributs parmi MPOL_DEFAULT, MPOL_BIND, MPOL_INTERLEAVE, MPOL_WEIGHTED_INTERLEAVE, MPOL_PREFERRED, et MPOL_LOCAL (qui sont décrits en détails ci-dessous). Tous les modes de politique excepté MPOL_DEFAULT nécessitent que l’appelant spécifie, dans le paramètre nodemask, le ou les nœuds auxquels s’appliquent le mode.
L'argument mode peut aussi contenir des attributs optionnels. Les valeurs possibles sont :
nodemask pointe vers un masque de bits d’identifiants de nœuds qui contient jusqu’à maxnode bits. La taille du masque de bits est arrondie au multiple supérieur de sizeof(unsigned long), mais le noyau n’utilisera que jusqu’à maxnode bits. Une valeur NULL pour nodemask ou une valeur maxnode de zéro indique un ensemble vide de nœuds. Si la valeur de maxnode est zéro, l’argument nodemask est ignoré.
Quand une valeur de nodemask 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 MPOL_F_STATIC_NODES ne soit spécifié), et qui contient de la mémoire. Si l’attribut MPOL_F_STATIC_NODES est mis dans mode et si un nodemask 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 (local allocation). 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 nodemask.
Le paramètre mode doit contenir une des valeurs suivantes :
La politique mémoire de thread est préservée au travers d’un execve(2) et est récupérée par les processus enfant créés avec fork(2) ou clone(2).
S’il réussit, set_mempolicy() renvoie 0 ; s’il échoue, il renvoie -1 et écrit errno en conséquence.
Linux.
Linux 2.6.7.
La politique de mémoire n’est pas conservée si la page est déchargé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 est effective au moment où la page est allouée.
Consultez numa(7) pour des informations sur la prise en charge par des bibliothèques.
get_mempolicy(2), getcpu(2), mbind(2), mmap(2), numa(3), cpuset(7), numa(7), numactl(8)
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>, Jean-Philippe MENGUAL <jpmengual@debian.org> et Jean-Pierre Giraud <jipege@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 à debian-l10n-french@lists.debian.org.
| 2 mai 2024 | Pages du manuel de Linux 6.9.1 |