IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

getrusage - Temps d'exécution du fils


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut getrusage - Temps d'exécution du fils
    Bonsoir à tous,

    Je vous expose mon problème, j'ai besoin de savoir le temps qu'un fils à tourner et donc je devais passer par getrusage mais j'ai un petit problème car je crée plusieurs fois un fils, un fork() dans une boucle while, donc la première fois il m'affiche bien une durée cohérente (1.x s), mais dès qu'il refait un fork il additionne les temps process de tout les fils ce qui fait que je me retrouve avec un process qui dure 1.x s en suite 3.x s et ainsi de suite.
    Donc je voulais savoir si c'était possible de reset après chaque itération ou alors une option du wait que je ne connais peut-être pas qui permettrait ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    ...
                    usage.ru_majflt=0;
    		usage.ru_utime.tv_sec=0;
    		usage.ru_utime.tv_usec=0;
    		if (fork()==0)
    		{				
    			for(op=0;op<=1000000000;op++);
    			//execvp ...
    			exit(1);
    		}
    		waitpid(0,&stat,0);
    		getrusage(RUSAGE_CHILDREN, &usage);
    		printf("%ld pagefault\n",usage.ru_majflt);
    		printf("%ld.%lds\n", usage.ru_utime.tv_sec,usage.ru_utime.tv_usec);
    ...

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Le probleme avec getrusage c'est que, comme indique dans le man :

    RUSAGE_CHILDREN
    Return resource usage statistics for all children of the calling process that have terminated and been waited for. These statistics will include the resources used by grandchildren, and further removed descendants, if all of the intervening descendants waited on their terminated children.
    Donc je pense que ton resultat est obligatoirement fausse a partir du moment ou tu lances plusieurs fork etant donne qu'apparemment, les resultats entre chaque execve sont conserves:

    Resource usage metrics are preserved across an execve(2).
    De ce que j'ai pu trouver sur le net, certains utilisent stat ou une fonction de la famille des time. Peut-etre devrais-tu t'y prendre de cette facon ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Je n'ai pas essayé avec time, je vais voir ça ce soir, mais sinon j'ai réglé mon problème d'une autre manière en sauvegardant la durée après fork et en la soustrayant à chaque itération suivante.

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/06/2005, 12h17
  2. [C#] Calcul du temps d'exécution.
    Par lozzko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2005, 16h12
  3. Réponses: 2
    Dernier message: 25/05/2004, 15h33
  4. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 18h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo