Você está na página 1de 1

Shell Paralelo | PROGRAMAÇÃO

Quadro 2: Benefícios
Nos dois testes realizados, foi usada a abordagem do muito bem (com tempos de execução de 207, 107 e 55
lançador dinâmico demonstrada no artigo. No primeiro segundos, isto é, eficiência de 94 por cento nos quatro
caso, o script converteu 20 arquivos raw para o formato processadores).
TIFF numa máquina Intel Quad-core (Q9450 com 2.67
GHz e cache de 2x 6 MB L2). Na segunda execução, quando os arquivos estavam no
cache do servidor NFS, a diferença foi mínima comparada
Se os arquivos forem repassados para o ufrawbatch de ao teste local. Finalmente, a utilização de cinco proces-
uma só vez, o programa leva 132 segundos (interagindo sos auxiliares no lugar de quatro produziu resultados um
de maneira autônoma pelos arquivos). O lançador dinâ- pouco melhores.
mico e as variáveis PMAX=12 e PMAX=4 reduziram o tempo
de processamento de 134 segundos para 68 e 35 se- O efeito de mais processos auxiliares é mais acentuado
gundos. A eficiência desse método com quatro proces- no caso de fluxos de dados mais “estreitos”. Contudo,
sadores, portanto, é de aproximadamente 95 por cento; classificar os arquivos WAV em ordem decrescente oca-
ou seja, o tempo de execução caiu para um quarto. sionou melhor resultado na conversão. No fim do proces-
samento, apenas um processador estava ocupado com
A diferença entre essa abordagem e a paralelização es- o último arquivo, o que causou uma alteração despropor-
tática é sutil. A razão para essa pequena diferença é que cional no tempo final. É possível implementar mais melho-
os arquivos originais são praticamente do mesmo tama- rias, mas essas já bastam. No caso de simulações com-
nho. Dessa forma, todos os processadores são igual- plexas que levam horas ou dias, é recomendável testar
mente carregados. com outras otimizações.

O segundo cenário utiliza outro método para sobrecar- O equilíbrio de energia de um computador trabalhando
regar o processador para converter arquivos WAV para com carga máxima é um pouco melhor do que se ele tra-
MP3, mas dessa vez com condições mais adversas. O balhasse em processamento sequencial com apenas um
script lê e escreve num servidor NFS com uma cone- núcleo. Contudo, economiza-se mais energia desligando
xão de rede de 100 Mbps. Observações interessantes o monitor enquanto o computador está ocupado com
sobre esse cenário são que, primeiro, o método escala tarefas complexas de processamento.

com essa prática – seja lá o que isso ampliada suporta chamadas de dis- Conclusões
quer dizer – porque o Bash já pode patchWork na linha de comando: Com apenas algumas linhas de có-
estar usando esses descritores inter- digo, é possível utilizar as técnicas
namente. Como alternativa, pode- $ dispatchWork c “doSomething” demonstradas aqui para paralelizar
se alterar o limite para o número de ➥file1 file2 […] scripts shell já existentes e desfrutar
canais (linha 4). de benefícios potencialmente sig-
Há outras implementações possí- A versão ampliada também possui nificativos (veja o quadro 2). Outras
veis. Por exemplo, o lançador e os au- comentários e outras opções para linguagens de script podem usar
xiliares poderiam usar arquivos para teste que permitem ao administrador essa abordagem; contudo, algumas
se comunicar. O lançador poderia monitorar os scripts. oferecem alternativas melhores.
então escrever as tarefas em arqui- Por exemplo, Python usa um fork
vos específicos de cada auxiliar. Os Várias máquinas explícito (os.fork()) além dos pipes
auxiliares verificariam a presença de Se a eficiência do processamento (os.pipe()), o que permite soluções
seu arquivo, processariam as tarefas paralelo na máquina local não for de baixo nível muito próximas à
ali definidas e então os apagariam. suficiente, o mesmo princípio pode eficiência do C. ■
Na outra ponta, o lançador buscaria ser aplicado a uma rede. Nesse caso,
os lançadores sem arquivos corres- um lançador de primeiro estágio
pondentes e saberia imediatamente pode usar comunicação TCP/IP
quais deles estão ociosos. para comunicar-se com lançadores Mais informações
Obviamente, essa solução não de segundo estágio em outras má-
é das melhores, em razão da ne- quinas. Os lançadores de segundo [1] Código-fonte do lançador
cessidade da verificação contínua estágio comunicam-se então com dinâmico: http://www.
linuxmagazine.com.
de arquivos. os auxiliares locais. Porém, essa br/arquivos/lm51/
Uma versão mais longa do exemplo abordagem só é viável numa rede programacao_bash.tar.gz
5 está disponível em [1]. Essa versão suficientemente segura.

Linux Magazine #51 | Fevereiro de 2009 77

Você também pode gostar