[bcn-pm] Perls i forks "PD"

kenneth kenneth at gnunetworks.com
Fri Mar 19 08:03:36 CST 2004


Per cert, arrenca + d'un procès x màquina, sino, entre que arrenca i
s'atura, es perd bastant temps sense processar res.... posaría uns 3-4
per CPU, de forma q t'assegures q tregui fum contínuament ;)

Saluuut!


On dv, 2004-03-19 at 15:00, kenneth wrote:
> Bones,
> 
> 	He fet alguna coseta de paralelització de processos en perl i... xos
> dels zombies és com una merda!
> 
> La meva solució ha estat:
> 
> sub REAPER{
>         $aliveprocs--;
>         wait;
> };
> $SIG{CHLD} = \&REAPER;
>  
> o 
> $SIG{CHLD} = 'IGNORE';
> 
> 
> Compto els processos q queden vius i.. totes dues
>  formes dues fallen una mica, la primera de vegades 
> triga mooolt en esperar q l'últim zombie acabi...
> 
> Pel q fa a comunicar el resultat al pare, pots fer servir sockets, bé
> unix bé TCP, de forma q es poden
> arribar a comunicar sistemes distribuïts.
> 
> 
> Saluuuut!
> 
> 
> On dj, 2004-03-18 at 23:13, Lluís Ribes wrote:
> > Hola,
> > 
> > Sóc en Lluís Ribes, aquest dies estic fent un sheduler per llançar 
> > treballs sobre una plataforma GRID. He decidit fer-ho en perl per la 
> > seva portabilitat i la sencillessa a l hora de debugar errors. El 
> > scheduler és molt sencill, i actualment encara més, per què el que fa és 
> > llansar uns 14 treballs paral.lels cada 200 segons sobre 5 màquines 
> > diferents. Aquest 14 treballs són cadascú un fork, i ja m´he trobat amb 
> > un problema, i és que hi ha un limit de zoombies generats pels forks que 
> > poden estar actius, de tal forma, que després de 8 torns de generar 14 
> > treballs, el pare a arrivat al limit de forks que pot fer i peta.
> > 
> > Aixó ho he resolt parcialment fent que el fork que genera 14 treballs 
> > cada cop, estigui en un fitxer perl que és cridat per unaltre procés 
> > perl mitjançant system. Es pot fer algo per evitar el zoombies? cal dir 
> > que el pare no pot bloquejar-se fent un wait perquè sinó és perd la 
> > paral.lització.
> > 
> > Per unaltre costat, he volgut evolucionar el scheduler, i ara vull que s 
> > estiguin executant 1 treball per màquina, i quan una màquina es queda 
> > sense treballs, doncs li assigno un. Per aixó continuo fent servint 
> > forks, però ara, aquest fills han d´enviar  informació  que  han acabat 
> > la feina al pare per a que es dongui compte i llanci unaltre treball a 
> > la màquina descarregada. Vull evitar fer servir memòria compartida, ja 
> > que em reduïria la portabilitat tal com molt bé m´ha comentat en Alexm  
> > (mersi ;) ) .Fer-ho amb pipe no m he és útil , o no sé com fer-ho per a 
> > que pugui crear una pipe per cada fill, entrar en un bucle d´espera que 
> > algun fill possi senyal de que ja està i llansar unaltre fill amb una 
> > pipe nova sense bloquejar el pare pel bloqueig de les pipes,
> > 
> > Com ho veieu, creieu que aquest escenari és óptim pel lleguatge PERL?
> > 
> > Gràcies!,
> > 
> > lluis,
> > 
> > 
> > _______________________________________________
> > llista dels Barcelona-pm
> > Barcelona-pm at mail.pm.org
> > http://mail.pm.org/mailman/listinfo/barcelona-pm
> > BCN Perl Mongers: http://barcelona.pm.org
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm at mail.pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org



More information about the Barcelona-pm mailing list