Auteur |
Message |
findwin
Forumeur occasionnel
Messages: 29
|
Posté le:
Mar 30 Aoû 2005 - 10:43 |
|
salut,
Je suis depuis quelques temps confronté à un probleme et je n'arrive pas à mettre le doigt sur la source d'"erreur". J'ai développé recemment un serveur de communication et une bibliothèque cliente basée sur les pipes nommés windows. Le but étant de communiquer en temps réel entre les clients les valeurs de différentes variables dès leur changement.
La problèmatique est que je n'obtiens pas les performances prévues...
En effet le serveur ne réussi à transmettre qu'un message toutes les 30 ms (message et réponse de l'autre client). En regardant le gestionaire de taches, je peux remarquer que le processeur n'est absolument pas sollicité.
Le fait le plus troublant est que si je refais le même test avec une page web en flash ou un exe flash ouvert, les performances sont 10 à 12 fois supérieure!!!
J'ai donc pensé pendant un moment à un ralentissement du à mes traces sur la console (ah oui, les clients et le serveur sont en mode console), en imaginant, que flash pouvait lancer une quelquonque acceleration materielle de l'affichage. Cependant, même en supprimant les traces, le problème persiste. Peut-être est-ce un problème d'ordonnacement? portaant il me semble que mes sections critiques sont protégées au mieux et que les temps de suspension de thread sont minimums...
A titre d'information, les clients ainsi que le serveur sont entièrement développés de manière parallèle:
Le serveur possède 3 threads par client connectés: un qui lit sur le pipe et empile les messages dans une file d'attente, un qui redirige les messages dans la file d'attente d'envoi de message du client destinataire et un qui dépile les messages et les ecrit dans le pipe du destinataire. (architecture classique...)
La bibliothèque possède 2 threads: un qui lit le pipe et empile les messages dans une liste de reception et un qui dépile la liste d'envoi de message et écrit lesdits messages sur le pipe. (classique aussi)
Si une personne a déjà expérimenté ce genre de problème, je suis tout ouie pour les conseils que vous pourriez me donner.
merci d'avance
Yverain. |
|
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Mar 30 Aoû 2005 - 17:12 |
|
Bon tu connais mon niveau en C++, donc jrisque de te donner des conseils pas tres utiles mais bon, on sait jamais...
T'a essayé d'augementer la priorité de tes Thread ? Peut etre que le CPU est pas tres utilisé parce qu'ils ont une priorité très basse mais qu'ils réalisent beaucoup de calcul.
Pour la comparaison avec l'exe flash est ce que c'etait dans les memes conditions (un code + ou - equvalent) ou tu as juste testé les pipes nommés en flash ?
Sinon j'ai aussi regardé vite fait dans la doc de l'api windows, et j'ai vus qu'il y'avais pas mal de param lors de la création du pipe, est ce que t'a essayé de modifié certains param ? J'ai vu par exemple que tu pouvais faire des pipe bloquant ou le timeout qui pose probleme ?
Et puis si tu a encore des problemes de perf, passe a java c'est beaucoup mieux, t'a autant de probleme de perf mais au moins c'est plus ta faute |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
findwin
Forumeur occasionnel
Messages: 29
|
Posté le:
Mar 30 Aoû 2005 - 19:50 |
|
j'ai essayé de changer les priorités...
en fait je ne communique pas avec flash... c'est comme si le fait d'avoir flash de lancé boostait mon prog
pour les pipes, ils sont nickels, j'ai chronométré les temps d'utilisation: 0ms!!!
le problème est vraiment au niveau de l'ordonnancement des threads... |
|
|
|
|
queskispace
Accro à Web-IG
Sexe:
Messages: 194
Localisation: En ce moment, derrière mon pc
|
Posté le:
Mar 30 Aoû 2005 - 21:14 |
|
Ah ouai ca m'etonnais aussi qu'on puisse faire des pipes nommées en flash
Par contre c'est bizarre que ca ai un impact sur le fonctionement du prog, surtout si le probleme est due a l'ordonancement des threads, jvois pas trop comment flash pourrait intervenir dessus... |
_________________ Tout a une fin sauf le saucisson qui en a deux |
|
|
|
|