Programmation » [Posix Threads] - Condition Variables && Cpu Usage
Catégorie:  
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 10:06:35,
Par Altar
Après quelques tests sur ces superbes choses que sont les variables de conditions, je suis confronté à un petit problème.

Exemple : 2 threads qui s'échangent des données à travers un petit buffer où le read se met en attente (sur une variable de condition) lorsque le buffer est vide. Apparement l'utilisation cpu a tendance à monter en flêche lorsqu'un des threads passe en wait (on arrive à 25% d'utilisation cpu).

En surfant j'ai vu que quelques personnes avaient ce problème mais je n'ai pas trouvé de solution. Si quelqu'un qui a déjà été confronté à ce problème pouvait partagé ses expériences, je l'en remercie d'avance.
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 10:36:44,
Par user-179.html
Je n'ai plus fait de threads posix depuis quelques années, mais tu pourrais déjà poster un petit programme illustrant le problème. Le CPU qui monte, c'est souvent un petit détail qui fait boucler à l'infini le code au lieu de le bloque. Sans voir le code, difficile de dire ce qui cloche.
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 10:47:53,
Par Altar
Ok, je vais tenter d'isoler les éléments pour faire un code court et lisible illustrant le problème.
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 12:10:49,
Par zion
Merlin + 1.

En pascal, certains débutant on tendance à faire:

  1. while monautretrucapasfini do ;


Du coup, ca monte à 100% de CPU :kiki:

  1. while monautretrucapasfini do  
  2. begin 
  3.   Application.ProcessMessages;  
  4.   Sleep(100);  
  5. end;


Ca le fait déjà tout de suite plus pour le pauvre CPU :joce:
Je suis le Roy :ocube:
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 12:13:29,
Par philfr
Dis-nous aussi sur quelle version de quel OS et le cas échéant quelle version de libraire pthread.

N'oublie pas que en sortant de ton pthread_cond_wait, tu dois toujours checker si la condition est effectivement présente pour continuer, sinon tu dois repartir de suite dans ton wait.

Cela dit, les threads c'est mal :grin: ...
Hormis le vrai temps réel, ou la vraie concurrence cpu-intensive, la plupart des problèmes résolus aujourd'hui avec des threads peuvent en général être résolus par select() ou assimilé... Et c'est une tendance que j'observe de plus en plus dans les applications type serveur ou GUI. Je suis prêt à argumenter davantage dans un autre débat bien sûr...

   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 12:17:39,
Par zion
philfr> Je lance le thread :banzai:
Je suis le Roy :ocube:
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 19:38:50,
Par Altar
Ok, j'ai résolu le problème. Apparement, le scheduleur changeait de thread à la fin de chaque recv (ne me demander pas pourquoi) et certains recv étaient vraiment très court ce qui provoquait un swap entre les threads très fréquents ==> une utilisation cpu fort élevée.
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 20:30:49,
Par philfr
Quel OS ? :oh:
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 21:12:30,
Par Georgio
Debian Sarge :wink:
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 21:34:28,
Par philfr
Debian Sarge c'est pas un OS c'est une distribution GNU/Linux :oh:

Kernel 2.4 ou 2.6 ? Standard package Debian ou recompilé avec tes options ?

Puis d'abord, t'es pas Altar toi, pourquoi c'est toi qui réponds ?... :wink:

Dernière édition: 18/04/2006 @ 21:35:06
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 22:28:13,
Par Georgio
Oups désolé philfr ^^ ( honte sur moi pour la confusion entre OS et distrib ^^ )

J'reponds pour Altar parce que j'connais un peu la machine pour laquelle il bosse :grin:

Oups oublié de noter :

2.6.14-2 et j'dirai qu'il a été recompilé à la sauce altar :grin:

(Et je réponds pour lui, car comme il est pas là il aura peut etre la surprise d'une jolie réponse lors de sa reconnexion :grin: )

Dernière édition: 18/04/2006 @ 22:31:19
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 22:51:57,
Par ovh
Georgio et Altar sont dans un bateau... :calinlit:

:patapai:
:neowen:

Dernière édition: 18/04/2006 @ 22:52:15
Je n'ai rien à voir avec www.ovh.com
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 23:03:00,
Par Georgio
Bon voila altar pour le coming out c'est fait ^^
   
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 19/04/2006 @ 13:23:15,
Par Altar
ovh > Je ne permets pas de telles accusations :oh:

Dernière édition: 19/04/2006 @ 15:00:34
Répondre - Catégorie:  
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?