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 :

Consomation CPU qui augmente


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Par défaut Consomation CPU qui augmente
    Bonjour,

    J'ai un programme qui réceptionne des trame sur le réseau (à l'aide de winPcap) et les enregistre sur un fichier. Ce programme tourne en boucle jusqu'a ce que l'utilisateur clique pour arrêter l'acquisition.

    Le programme fonctionne pour de courte durée mais pas pour des longues...
    En fait je me suis aperçu que l'utilisation du CPU augmente progressivement jusqu'à atteindre 100% d'utilisation ce qui entraine la perte de trame de mon programme d'acquisition ...

    Si quelqu'un passe par là et a déjà eut le problème, je suis preneur !

    Ps : Est ce que ce serait possible que ce soit du à l'écriture intensive sur disque?

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 537
    Par défaut
    Citation Envoyé par jkalzsmu Voir le message
    Ps : Est ce que ce serait possible que ce soit du à l'écriture intensive sur disque?
    Oui c'est pas impossible le CPU doit permuter entre les interruptions hardware et software ce qui peut plus le solliciter.
    Y'a-t-il utilisation de threads dans ce programme qui appelle wincap ?

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut Est ce que ce serait possible que ce soit du à l'écriture intensive sur disque?
    A priori, non...
    Mais il devrait être 'simple' de les mettre en commentaire pour voir.
    Sinon, difficile de savoir sans regarder le code mais...

    "ca mange du CPU" alors que ca ne fait que des ES (lecture réseau et écritures disques).
    Note: la ou on consomme du CPU c'est plutôt dans la copie des buffers mémoire mais, il faut dans ce cas un traffic réseau conséquent.
    et la consommation CPU devient insupportable lorsqu'on fait fonctionner le programme longtemps.
    => Cà boucle où? Pourquoi?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    Oui c'est pas impossible le CPU doit permuter entre les interruptions hardware et software ce qui peut plus le solliciter.
    Y'a-t-il utilisation de threads dans ce programme qui appelle wincap ?
    Oui il y a un threads qui s'occupe de récupérer les trames reseaux (géré par winpcap). Le programme principale est l'interface graphique (visual c++).

    La boucle est gérée par winpcap mais en gros voilà ce qu'elle fait :
    * Lecture d'une trame.
    * Copie dans le buffer de winpcap.
    * Copie dans un autre buffer pour l'utilisateur.

    En fait le problème n'est pas vraiment la consomation du CPU qui est grande, lorsque je lance le programme, elle est de 30%.
    Le problème c'est qu'elle augmente continuellement lorsque le programme est en train de tourner.
    Elle arrive à 70% de consommation seulement au bout de 5 minutes alors que la charge sur le réseau reste constante ...

    Autre chose que j'ai remarqué et qui pourrait peut être vous aider : lorsque je coupe le trafic sur le réseau, la consommation CPU se remet instantanément en 0%, mais en revanche, si je fait une requête d'entrée sortie sur le disque alors elle est super lente !

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    La boucle est gérée par winpcap mais en gros voilà ce qu'elle fait :
    * Lecture d'une trame.
    * Copie dans le buffer de winpcap.
    * Copie dans un autre buffer pour l'utilisateur.
    En supposant que le temps CPU ne reflète que les copies mémoires, est ce que ces buffers "augmentent" avec le nombre de paquets reçus?
    En espérant que le nombre de bytes copiés n'est que fonction de ceux reçus, çà fait combien de MB occupés en mémoire?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Autre chose que j'ai remarqué et qui pourrait peut être vous aider : lorsque je coupe le trafic sur le réseau, la consommation CPU se remet instantanément en 0%, mais en revanche, si je fait une requête d'entrée sortie sur le disque alors elle est super lente !
    Même lorsque le CPU est tombé à 0% d'utilisation?
    Sinon, ton disque semble être saturé...
    Quelle est la quantité d'information écrite?
    Si tu stockes beaucoup d'informations en mémoire, tu as peut être un problème de pagination.
    -W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 88
    Par défaut
    Pour ce qui est du buffer de winpcap, sa taille est fixé par mes soins
    C'est en fait un ring qui permet a pcap de stocker les paquets reçu mais non transmit à l'utilisateur.

    Les paquets que je reçoit sont tous de la même taille (jumbo frame de 6978 octets).

    Je pense pas que le disque soit saturé car il fait plus de 500 giga et marche bien (4 disques 15000 tours/min en raid0).
    Moi je penserais plutôt sur une protection de L'OS envers un méchant virus qui pourrait remplir ton disque dur en 1 soirée ...

    Mon collègue pense que le cpu est "dans le paté" apres avoir tourné a fond pendant longtemps. Ce qui expliquerai pourquoi, lorsque le cpu retombe à 0%, il n'arrive toujours pas à écrire sur le disque.

    La quantité d'information écrite est assez grande, c'est de l'ordre de 100Mo/s mais les disques sont capable de supporter une telle charge puisque au début du programme, il n'y a pas de problèmes.

    Merci de ton aide

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 754
    Par défaut
    Moi je penserais plutôt sur une protection de L'OS envers un méchant virus qui pourrait remplir ton disque dur en 1 soirée ...
    Est ce que çà fonctionne raisonnablement en commentant les écritures disques?

    Mon collègue pense que le cpu est "dans le paté" apres avoir tourné a fond pendant longtemps. Ce qui expliquerai pourquoi, lorsque le cpu retombe à 0%, il n'arrive toujours pas à écrire sur le disque.
    Tant que nous n'aurons pas identifié la ressource (ou plutôt la capacité qui est sur-utilisée) en défaut...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La quantité d'information écrite est assez grande, c'est de l'ordre de 100Mo/s mais les disques sont capable de supporter une telle charge puisque au début du programme, il n'y a pas de problèmes.
    Si je ne m'abuse, 100Mo/7k ~ 1500 IO/s.

    RAID0 c'est bien mais à 150 IO/s par disque, tu n'as qu'une capacité de 4x150 = 600 IO/s. Les autres IOs sont en attente où?
    Note: Il serait sage de faire des IOs au moins 4 fois plus grosses.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Consomation CPU 100%
    Par Ines102006 dans le forum Oracle
    Réponses: 10
    Dernier message: 27/12/2006, 17h55
  2. Pb de tablespace UNDO qui augmente toujours
    Par foster06 dans le forum Oracle
    Réponses: 2
    Dernier message: 08/12/2006, 18h32
  3. Réponses: 9
    Dernier message: 08/12/2006, 10h36
  4. fenêtre CPU qui s'ouvre
    Par chourmo dans le forum Delphi
    Réponses: 3
    Dernier message: 18/07/2006, 12h10
  5. [JVM]Mémoire utilisée qui augmente...
    Par Vrylx dans le forum Général Java
    Réponses: 1
    Dernier message: 11/10/2005, 13h10

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