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-2001, POSIX.1-2008, SVr4, 4.3BSD. POSIX.1 spécifie getrusage(), mais spécifie seulement les champs ru_utime et ru_stime.
RUSAGE_THREAD est spécifique à Linux.

NOTES

Les mesures de l'utilisation des ressources sont conservées au travers d'un execve(2).
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()).
Consultez aussi la description de /proc/pid/stat dans proc(5).

VOIR AUSSI

clock_gettime(2), getrlimit(2), times(2), wait(2), wait4(2), clock(3)

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 <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]>, Cédric Boutillier <[email protected]>, Frédéric Hantrais <[email protected]> et Jean-Philippe MENGUAL <[email protected]>
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 à [email protected]

Recommended readings

Pages related to vtimes you should read also: