[Cascavel-pm] Perl X RAM (memória)

Lindolfo Lorn Rodrigues lorn.br em gmail.com
Quinta Janeiro 20 04:04:02 PST 2011


Cara, usar system não é uma boa pratica para cada chamada no system ele vai
carregar um bash para tratar o STDOUT que você manda para o /dev/null, eu
recomendo você dar uma olhada no POE, ele é um sistema de 'threads' e você
pode construir seu system dentro dele, e ele seria o seu "script chefe"
porque ele foi feito para isso.
E ele tem um cookbook http://poe.perl.org/?POE_Cookbook quando eu usei ele,
eu peguei um cookbook ( receita de bolo ) que mais se parecia com o meu
problema e mudei um pouco com o meu programa e etc. No seu caso parece que
você que gerenciar processos
http://poe.perl.org/?POE_Cookbook/Child_Component.
Minha principal dica é, não use system faça seus programas Perl conversarem
com eles mesmo usando IPC, TCP sei lá, o POE resolve tudo isso para você
caso tenha alguma duvida pergunte ai, flw.

2011/1/20 Tom Mostard <capmostarda em gmail.com>

> Olá, pessoal!
>
> Estou tendo um problema de memória com scripts em Perl.
> Alguém aí teve algum problema parecido?
>
> Tenho um "pequeno" sistema que precisa executar vários scripts Perl em
> paralelo.
> Então existe um script Perl "chefe" que fica responsável por executar eles
> com parâmetros diferentes usando system().
>
> O sistema acessa vários bancos de dados e a depender do banco, da tabela e
> do campo ele executa um módulo específico.
> Uso o MySQL em outra máquina para não abusar da memória.
>
> Script-chefe:
>
> while ( my $i < $execucoes ) # são execuções limitadas, mas por enquanto
> são 60
> {
>     system( './script.pl $parametro1 > /dev/null & ' );
> }
>
> Dentro do script é carregado um módulo usando require assim:
>
> require $ARGV[ 0 ].".pm";
>
> Funciona tudo certo, se rodo 20, funciona tudo normal e eles ocupam 158 MB
> de memória.
> Se rodo 40, eles ocupam 316 MB de memória além da memória usada pelo
> sistema.
> Me parece que cada script carregado usa 8 MB em média. (Isso é
> possível/normal?)
> Quando uso 60, nem todos os scripts são executados.
> Existe alguma maneira de executar um script otimizando o uso de memória ou
> vou ter que reavaliar o código?
> Já revisei o código e eliminei arrays, variáveis de conexões com bancos
> desnecessárias.
> Existe algo mais que eu possa fazer?
>
> Abraços,
>
> Tom
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>



-- 
lorn at lornlab dot org
Lindolfo "Lorn" Rodrigues
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20110120/584bd394/attachment-0001.html>


Mais detalhes sobre a lista de discussão Cascavel-pm