> > C'est un programme client/server et ils ont choisi de forker le 
> > processus server pour chaque client connect�. donc 100 clients, 100 
> > processus servers, et donc 100 pipes entre le "maitre" et les servers 
> 
> (et l� c'est mon avis partial), cette architecture est
> preque certainement mauvaise: � moins de n'avoir une machine
> avec 100 processeurs, l'inter�t d'avoir 100 threads est
> extremement limit�. Un seul serveur qui select(2) sur toutes
> les fifos (ou toutes les sockets) fera sans doute aussi bien
> l'affaire, sans avoir � se casser la t�te avec des probl�mes
> de concurrences inutiles[1].

Il me semble que tu oublis compl�tement un petit d�tail : il faut que
si l'un des serveurs part en vrille, il ne bloque pas les autres.
Avec le syst�me envisag� par les �tudients en question, tu as la
garantie qu'au pire il y aura 1/100�me du CPU occup� � faire n'importe
quoi si un client fait planter un serveur. Avec la technique qui
consiste � n'utiliser qu'un seul serveur, tu dois te palucher toi m�me
le partage des ressources entre les clients, et ca reviens au m�me (sauf
qu'il faut refaire soit m�me ce qui a d�j� �t� fait et �prouv�). En
fait, tu ne peut pas balayer sous le tapis les probl�mes d'acc�s
concurrent aux ressources.

C'�tait pendant longtemps le probl�me de mysql si j'ai bien compris : il
n'avait qu'une file de requete : une requ�te prenait trois heures ? tant
pis, pendant ce temps l� les autres n'avancaient pas... Au total, le
temps CPU pour traiter toutes les requ�tes sera le m�me (et m�me, il
sera moindre), mais ce n'est pas un comportement acceptable.


Répondre à