getrusage
Table des matières
Retour à l'index
NOM
getrusage - Lire l'utilisation des ressources
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <sys/resource.h>
int getrusage(int who, struct rusage *usage);
DESCRIPTION
getrusage() renvoie la mesure de l'utilisation des ressources pour
who, qui peut valoir une des valeurs suivantes :
- RUSAGE_SELF
-
Renvoyer les statistiques d'utilisation des ressources pour le processus
appelant, ce qui correspond à la somme des ressources utilisées par tous les
processus légers (threads) du processus.
- RUSAGE_CHILDREN
-
Renvoyer les statistiques d'utilisation des ressources pour tous les
processus fils du processus appelant qui se sont terminés et dont la fin a
été attendue (avec wait(2)). Ces statistiques incluront les ressources
utilisées par les petits-enfants, et autres descendants déjà retirés si tous
les descendants en question ont attendu la fin de leurs enfants.
- RUSAGE_THREAD (depuis Linux 2.6.26)
-
Renvoyer les statistiques d'utilisation des ressources pour le thread
appelant. La macro de test de fonctionnalité _GNU_SOURCE doit être
définie préalablement (avant l'inclusion d'un fichier d'en-tête) afin
d'obtenir la définition de cette constante à partir de
<sys/resource.h>.
L'utilisation des ressources est renvoyée dans la structure pointée par
usage, qui est de la forme suivante :
struct rusage {
struct timeval ru_utime; /* Temps CPU utilisateur écoulé */
struct timeval ru_stime; /* Temps CPU système écoulé */
long ru_maxrss; /* Taille résidente maximale */
long ru_ixrss; /* Taille de mémoire partagée */
long ru_idrss; /* Taille des données non partagées */
long ru_isrss; /* Taille de pile */
long ru_minflt; /* Demandes de pages (soft) */
long ru_majflt; /* Nombre de fautes de pages (hard) */
long ru_nswap; /* Nombre de swaps */
long ru_inblock; /* Nombre de lectures de blocs */
long ru_oublock; /* Nombre d'écritures de blocs */
long ru_msgsnd; /* Nombre de messages IPC émis */
long ru_msgrcv; /* Nombre de messages IPC reçus */
long ru_nsignals; /* Nombre de signaux reçus */
long ru_nvcsw; /* Chgmnts de contexte volontaires */
long ru_nivcsw; /* Chgmnts de contexte involontaires*/
};
Tous les champs ne sont pas complètement remplis ; les champs non maintenus
sont mis à zéro par le noyau (les champs non maintenus sont fournis pour
assurer la compatibilité avec d'autres systèmes, et parce qu'ils pourraient
un jour être supportés par Linux). Ces champs ont la signification
suivante :
- ru_utime
-
Temps total passé en mode utilisateur, mis dans une structure timeval
(secondes et microsecondes).
- ru_stime
-
Temps total passé en mode noyau, mis dans une structure timeval (secondes
et microsecondes).
- ru_maxrss (depuis Linux 2.6.32)
-
Taille maximale de mémoire résidente utilisée (en kilooctets). Pour
RUSAGE_CHILDREN, il s'agit de la taille résidente du fils le plus grand,
et non de la taille résidente maximale du processus.
- ru_ixrss (non maintenu)
-
Ce champ n'est actuellement pas utilisé par Linux.
- ru_idrss (non maintenu)
-
Ce champ n'est actuellement pas utilisé par Linux.
- ru_isrss (non maintenu)
-
Ce champ n'est actuellement pas utilisé par Linux.
- ru_minflt
-
Le nombre d'erreurs de pagination (page fault) sans activité
d'entrées-sorties. Ici, cette activité est empêchée en réclamant une page
qui se trouve dans la liste des pages qui attendent d'être réallouées.
- ru_majflt
-
Le nombre d'erreurs de pagination avec activité d'entrées-sorties.
- ru_nswap (non maintenu)
-
Ce champ n'est actuellement pas utilisé par Linux.
- ru_inblock (depuis Linux 2.6.22)
-
Le nombre de fois où le système de fichiers a dû traiter des entrées.
- ru_oublock (depuis Linux 2.6.22)
-
Le nombre de fois où le système de fichiers a dû traiter des sorties.
- ru_msgsnd (non maintenu)
-
Ce champ n'est actuellement pas utilisé par Linux.
- ru_msgrcv (non maintenu)
-
Ce champ n'est actuellement pas utilisé par Linux.
- ru_nsignals (non maintenu)
-
Ce champ n'est actuellement pas utilisé par Linux.
- ru_nvcsw (depuis Linux 2.6)
-
Le nombre de changements de contexte provoqués par un processus qui
abandonne volontairement le processeur avant la fin de la tranche de temps
qui lui est dévolue (habituellement pour attendre la disponibilité d'une
ressource).
- ru_nivcsw (depuis Linux 2.6)
-
Le nombre de changements de contexte provoqués par un processus de plus
grande priorité qui devient disponible à l'exécution, ou parce que le
processus actuel a dépassé le temps limite qui lui était alloué.
VALEUR RENVOYÉE
En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et
errno est définie pour préciser l'erreur.
ERREURS
- EFAULT
-
usage pointe en dehors de l'espace d'adressage disponible.
- EINVAL
-
who est invalide.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
| Interface | Attribut | Valeur
|
|
getrusage()
| Sécurité des threads | MT-Safe
|
STANDARDS
POSIX.1-2008.
POSIX.1 spécifie getrusage(), mais spécifie seulement les champs
ru_utime et ru_stime.
RUSAGE_THREAD est spécifique à Linux.
HISTORIQUE
POSIX.1-2001, SVr4, 4.3BSD.
Avant Linux 2.6.9, si le traitement de SIGCHLD est configuré avec
SIG_IGN, les statistiques d'utilisation des processus enfants sont
automatiquement incluses dans les valeurs renvoyées par RUSAGE_CHILDREN,
bien que POSIX.1-2001 interdise explicitement cela. Cette non conformité est
corrigée sous Linux 2.6.9 et ultérieurs.
La définition de la structure fournie au début de cette page provient de
4.3BSD Reno.
Des systèmes anciens fournissaient une fonction vtimes() qui remplissait
le même rôle que getrusage(). Pour des raisons de compatibilité
ascendante, la glibc (jusqu'à Linux 2.32) fournit aussi une fonction
vtimes(). Toutes les nouvelles applications devraient utiliser
getrusage() (depuis la Linux 2.33, la glibc ne fournit plus
d'implémentation de vtimes()).
NOTES
Les mesures de l'utilisation des ressources sont conservées au travers d'un
execve(2).
VOIR AUSSI
clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2),
clock(3), proc_pid_stat(5), proc_pid_io(5)
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>,
Cédric Boutillier <cedric.boutillier@gmail.com>,
Frédéric Hantrais <fhantrais@gmail.com>
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
-
- ATTRIBUTS
-
- STANDARDS
-
- HISTORIQUE
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:02 GMT, September 19, 2025