[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