Programmation » [Posix Threads] - Condition Variables && Cpu Usage
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 10:06:35,
Par AltarAprè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.
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.htmlJe 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 AltarOk, 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
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 12:13:29,
Par philfrDis-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 ...
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...
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 ...
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 zionphilfr> Je lance le thread
Je suis le Roy
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 19:38:50,
Par AltarOk, 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 philfrQuel OS ?
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 21:12:30,
Par GeorgioDebian Sarge
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 21:34:28,
Par philfrDebian Sarge c'est pas un OS c'est une distribution GNU/Linux
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 ?...
Dernière édition: 18/04/2006 @ 21:35:06
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 ?...
Dernière édition: 18/04/2006 @ 21:35:06
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 22:28:13,
Par GeorgioOups 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
Oups oublié de noter :
2.6.14-2 et j'dirai qu'il a été recompilé à la sauce altar
(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 )
Dernière édition: 18/04/2006 @ 22:31:19
J'reponds pour Altar parce que j'connais un peu la machine pour laquelle il bosse
Oups oublié de noter :
2.6.14-2 et j'dirai qu'il a été recompilé à la sauce altar
(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 )
Dernière édition: 18/04/2006 @ 22:31:19
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 18/04/2006 @ 22:51:57,
Par ovhGeorgio et Altar sont dans un bateau...
Dernière édition: 18/04/2006 @ 22:52:15
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 GeorgioBon voila altar pour le coming out c'est fait ^^
[Posix Threads] - Condition Variables && Cpu Usage
Publié le 19/04/2006 @ 13:23:15,
Par Altarovh > Je ne permets pas de telles accusations
Dernière édition: 19/04/2006 @ 15:00:34
Dernière édition: 19/04/2006 @ 15:00:34