[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