Sujet: [Posix Threads] - Condition Variables && Cpu Usage
18/04/2006 @ 10:06:35: Altar: [Posix Threads] - Condition Variables && Cpu Usage
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.
18/04/2006 @ 10:36:44: : [Posix Threads] - Condition Variables && Cpu Usage
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.
18/04/2006 @ 10:47:53: Altar: [Posix Threads] - Condition Variables && Cpu Usage
Ok, je vais tenter d'isoler les éléments pour faire un code court et lisible illustrant le problème.
18/04/2006 @ 12:10:49: zion: [Posix Threads] - Condition Variables && Cpu Usage
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:
18/04/2006 @ 12:13:29: philfr: [Posix Threads] - Condition Variables && Cpu Usage
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...

18/04/2006 @ 12:17:39: zion: [Posix Threads] - Condition Variables && Cpu Usage
philfr> Je lance le thread :banzai:
18/04/2006 @ 19:38:50: Altar: [Posix Threads] - Condition Variables && Cpu Usage
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.
18/04/2006 @ 20:30:49: philfr: [Posix Threads] - Condition Variables && Cpu Usage
Quel OS ? :oh:
18/04/2006 @ 21:12:30: Georgio: [Posix Threads] - Condition Variables && Cpu Usage
Debian Sarge :wink:
18/04/2006 @ 21:34:28: philfr: [Posix Threads] - Condition Variables && Cpu Usage
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:
18/04/2006 @ 22:28:13: Georgio: [Posix Threads] - Condition Variables && Cpu Usage
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: )
18/04/2006 @ 22:51:57: ovh: [Posix Threads] - Condition Variables && Cpu Usage
Georgio et Altar sont dans un bateau... :calinlit:

:patapai:
:neowen:
18/04/2006 @ 23:03:00: Georgio: [Posix Threads] - Condition Variables && Cpu Usage
Bon voila altar pour le coming out c'est fait ^^
19/04/2006 @ 13:23:15: Altar: [Posix Threads] - Condition Variables && Cpu Usage
ovh > Je ne permets pas de telles accusations :oh:
Retour