Scroll to navigation

GETRUSAGE(2) Manuel du programmeur Linux GETRUSAGE(2)

NOM

getrusage - Lire l'utilisation des ressources

SYNOPSIS

#include <sys/time.h>
#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 :

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.
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.
Renvoyer les statistiques d'utilisation des ressources du processus léger appelant.

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 :

Temps total passé en mode utilisateur, mis dans une structure timeval (secondes et microsecondes).
Temps total passé en mode noyau, mis dans une structure timeval (secondes et microsecondes).
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.
Ce champ n'est actuellement pas utilisé par Linux.
Ce champ n'est actuellement pas utilisé par Linux.
Ce champ n'est actuellement pas utilisé par Linux.
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.
Le nombre d'erreurs de pagination avec activité d'entrées-sorties.
Ce champ n'est actuellement pas utilisé par Linux.
Le nombre de fois où le système de fichiers a dû traiter des entrées.
Le nombre de fois où le système de fichiers a dû traiter des sorties.
Ce champ n'est actuellement pas utilisé par Linux.
Ce champ n'est actuellement pas utilisé par Linux.
Ce champ n'est actuellement pas utilisé par Linux.
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).
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

S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno en conséquence.

ERREURS

usage pointe en dehors de l'espace d'adressage disponible.
who est invalide.

CONFORMITÉ

SVr4, BSD 4.3. POSIX.1-2001 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).

L'inclusion de <sys/time.h> n'est plus obligatoire mais améliore la portabilité. (En fait, struct timeval est définie dans <sys/time.h>).

Sous Linux avant la version 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 fournissent une fonction vlimit() qui remplit le même rôle que getrusage(). Pour des raisons de compatibilité ascendante, la glibc fournit aussi une fonction vlimit(), mais toutes les nouvelles applications devraient utiliser getrusage().

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)

COLOPHON

Cette page fait partie de la publication 3.52 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».

26 septembre 2010 Linux