[bcn-pm] Perls i forks

kenneth kenneth at gnunetworks.com
Fri Mar 19 08:00:35 CST 2004


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



More information about the Barcelona-pm mailing list