Scroll to navigation

GETCPU(2) Manuel du programmeur Linux GETCPU(2)

NOM

getcpu - Déterminer le processeur et le nœud NUMA sur lesquels le thread appelant est en cours d'exécution

SYNOPSIS

#define _GNU_SOURCE             /* Consultez feature_test_macros(7) */
#include <sched.h>
int getcpu(unsigned int *cpu, unsigned int *node);

DESCRIPTION

L'appel système getcpu() identifie le processeur et le nœud sur lesquels le thread ou processus appelant est en cours d'exécution et écrit le résultat dans les entiers pointés par les arguments cpu et node. Le processeur est un petit entier unique identifiant une CPU. Le nœud est un petit entier unique identifiant un nœud NUMA. Si cpu ou node est NULL, rien n'est écrit dans leur pointeur respectif.

L'information placée dans cpu n'est garantie d'être exacte qu'au moment de l'appel : à moins que l'affinité CPU n'ait été définie avec sched_setaffinity(2), le noyau peut changer de processeur à tout moment. (Normalement, cela n'arrive pas car l'ordonnanceur essaie de minimiser les mouvements entre CPU et cache, mais c'est possible.) L'appelant doit être prêt à gérer la situation où les informations renvoyées dans cpu et node ne sont plus valables au retour de l'appel.

VALEUR RENVOYÉE

On success, 0 is returned. On error, -1 is returned, and errno is set to indicate the error.

ERREURS

Les arguments pointent en dehors de l'espace d'adressage du processus appelant.

VERSIONS

getcpu() a été ajouté au noyau 2.6.19 pour x86-64 et i386. La prise en charge de la bibliothèque a été ajoutée à la glibc 2.29 (les versions précédentes de la glibc n'offraient pas d'enveloppe pour cet appel système, nécessitant d'utiliser syscall(2)).

CONFORMITÉ

getcpu() est spécifique à Linux.

NOTES

Linux fait de gros efforts pour rendre cet appel aussi rapide que possible (sur certaines architectures, il passe par une implémentation dans la vdso(7)). Le but de getcpu() est de permettre aux programmes de réaliser des optimisations de données propres à chaque processeur et pour l'optimisation NUMA.

différences entre bibliothèque C et noyau

The kernel system call has a third argument:


int getcpu(unsigned int *cpu, unsigned int *node,
           struct getcpu_cache *tcache);

The tcache argument is unused since Linux 2.6.24, and (when invoking the system call directly) should be specified as NULL, unless portability to Linux 2.6.23 or earlier is required.

In Linux 2.6.23 and earlier, if the tcache argument was non-NULL, then it specified a pointer to a caller-allocated buffer in thread-local storage that was used to provide a caching mechanism for getcpu(). Use of the cache could speed getcpu() calls, at the cost that there was a very small chance that the returned information would be out of date. The caching mechanism was considered to cause problems when migrating threads between CPUs, and so the argument is now ignored.

VOIR AUSSI

mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7), vdso(7)

COLOPHON

Cette page fait partie de la publication 5.13 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>, 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 à debian-l10n-french@lists.debian.org.

22 mars 2021 Linux