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

Windows Discussion :

Comment analyser les causes possibles de consommation 100% CPU d'un processus ?


Sujet :

Windows

  1. #1
    Membre du Club Avatar de masterx_goldman
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 51
    Points
    51
    Par défaut Comment analyser les causes possibles de consommation 100% CPU d'un processus ?
    Bonjour tout le monde,

    J'ai un processus - dont j'ai écrit le code- qui cause la consommation 100% de la CPU, je voudrais savoir comment procéder pour savoir la cause de ce problème ?

    Première affirmation: Le gestionnaire des tâches n'indique pas ce processus comme le plus grand consommateur dans le gestionnaire des tâches, mais quand je l'arrête, la consommation CPU passe de 100% à un pourcentage normal ( 15 %, 7 % ...)

    Merci davantage pour vos réponses

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 324
    Points
    219 324
    Billets dans le blog
    123
    Par défaut
    Bonjour,

    Les processus qui utilisent tout le CPU ( 100% ) ou 100 / nb_de_coeurs sont des processus méchants, qui ne laissent rien aux autres. Pour "laisser du CPU" aux autres, il faut faire un sleep (ou tout autre méthode de temporisation).
    Souvent, ce sont les boucles while (genre while(1)) qui emmène le CPU a des plafonds, inutilement.

  3. #3
    Membre du Club Avatar de masterx_goldman
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    ...
    Souvent, ce sont les boucles while (genre while(1)) qui emmène le CPU a des plafonds, inutilement.
    Enfaite, j'ai aucune boucle infinie du genre while(1) sans Sleep .
    C'est une application windows dans laquelle je reçois des notifications auxquelles j'ai fait un abonnement.
    Les boucles while(1) contiennent soit des sleep soit des wait ( WaitForSingleObject et WaitForMultipleObjects et ces deux wait sont faites sur des évennements qui ne se déclenchent jamais infiniment: exemple : le changement d'une valeur de clé de registre ...)

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 324
    Points
    219 324
    Billets dans le blog
    123
    Par défaut
    Alors, je conseille d'utiliser des printf, ou encore des std::cout pour savoir comment cela tourne indéfiniment

  5. #5
    Membre du Club Avatar de masterx_goldman
    Inscrit en
    Mai 2008
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 164
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Alors, je conseille d'utiliser des printf, ou encore des std::cout pour savoir comment cela tourne indéfiniment
    Enfaite, j'ai fait plus que ça, j'ai fait une log/trace détaillée dans un fichier et surtout à l'intérieur des boucles, et y'a aucun signe de fuite de boucle infinie :/

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 324
    Points
    219 324
    Billets dans le blog
    123
    Par défaut
    Le printf est un peu mieux, car le fichier peut être bufferisé, de plus on ne voit pas le terminal qui inscrit 1000 fois le même message
    Enfin je pense que c'est mieux.
    Sinon je n'ai pas d'explication à part que WaitForSingleObject ou WaitForMultipleObjects font eux mêmes un while() O_o

  7. #7
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    à part que WaitForSingleObject ou WaitForMultipleObjects font eux mêmes un while() O_o
    Non, WaitForSingleObject ou WaitForMultipleObjects suspendent le thread tant qu'il n'a pas d'événements. Et si le thread est suspendu, il ne fait pas 100% CPU.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/01/2015, 09h09
  2. Réponses: 9
    Dernier message: 05/03/2013, 12h07
  3. [XL-2010] Comment analyser les données d'une combobox?
    Par VinceVDB dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/12/2012, 20h58
  4. Comment trouver les combinaisons possibles d'un tableau ?
    Par Jean-Marc.Bourguet dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 15h37
  5. Comment analyser les logs système ?
    Par gifffftane dans le forum Apache
    Réponses: 5
    Dernier message: 27/11/2008, 12h02

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