getcpu
Table des matières
Retour à l'index
NOM
getcpu - Déterminer le processeur et le nœud NUMA sur lesquels le thread
appelant est en cours d'exécution
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#define _GNU_SOURCE /* Consultez feature_test_macros(7) */
#include <sched.h>
int getcpu(unsigned int *_Nullable cpu, unsigned int *_Nullable 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
En cas de succès, 0 est renvoyé. En cas d'erreur, -1 est renvoyé et
errno est positionnée pour indiquer l'erreur.
ERREURS
- EFAULT
-
Les arguments pointent en dehors de l'espace d'adressage du processus
appelant.
STANDARDS
Linux.
HISTORIQUE
Linux 2.6.19 (x86-64 et i386), glibc 2.29.
Différences entre bibliothèque C et noyau
L'appel système du noyau a un troisième argument :
int getcpu(unsigned int *cpu, unsigned int *node,
struct getcpu_cache *tcache);
L'argument tcache est inutilisé depuis Linux 2.6.24 et (lorsqu'il est
appelé directement avec l'appel système) devrait être indiqué comme valant
NULL sauf si la portabilité vers Linux 2.6.23 ou antérieur est nécessaire.
Dans Linux 2.6.23 et antérieur, si le paramètre tcache n'était pas NULL,
il spécifiait un pointeur vers un tampon de l'appelant dans l'espace local
de stockage du thread utilisé pour fournir un mécanisme de cache à
getcpu(). L'utilisation de ce cache pouvait accélérer les appels à
getcpu(), avec le faible risque que l'information renvoyée ne soit plus à
jour. On a considéré que le mécanisme de cache entraînait des problèmes lors
de la migration de threads entre processeurs, aussi, cet argument est
aujourd'hui ignoré.
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.
VOIR AUSSI
mbind(2), sched_setaffinity(2), set_mempolicy(2),
sched_getcpu(3), cpuset(7), vdso(7)
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
-
- STANDARDS
-
- HISTORIQUE
-
- Différences entre bibliothèque C et noyau
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:02 GMT, September 19, 2025