Processamento Paralelo em Shell Script - Conversão de Arquivos WAV para MP3

Este artigo tem a finalidade de auxiliar na melhor utilização dos recursos físicos do seu servidor/computador. Vamos utilizar o |P|P|S|S| - (Distributed) Parallel Processing Shell Script para otimizar a conversão de arquivos de gravação do Asterisk de WAV para MP3.

[ Hits: 13.344 ]

Por: Eduardo Rebelo Lopes em 10/01/2013


Introdução - PPSS



Temos, muitas vezes, muitos recursos em nossos servidores, mas será que os utilizamos da melhor forma?

Máquinas com 4, 8, 16 núcleos, nós utilizamos todos esses processadores? E ao mesmo tempo?

Essas são algumas das perguntas que nos devemos fazer ao comprar uma máquina melhor, vamos utilizar tanto? Para sabermos se realmente estamos precisando, podemos simplesmente começar a utilizá-los melhor.

Neste artigo demostrarei como algumas tarefas do dia a dia podem ser melhor realizadas com o processamento distribuído, ao utilizar o |P|P|S|S| (Distributed) Parallel Processing Shell Script - um programa feito em shell script capaz de controlar comandos, tarefas, scripts etc, em paralelo, criando arquivos de log e debug automaticamente.

Aqui demostrarei como converter arquivos de áudio do meu servidor Asterisk em paralelo, uma tarefa que meu servidor iria ficar horas realizando, gastando tempo e recursos, agora de forma otimizada.

PPSS

Para adquirir o PPSS, basta acessar o link abaixo e fazer o download da versão mais nova:
Neste tutorial estou utilizando a versão Distributed Parallel Processing Shell Script version 2.97

Basta adquirir o pacote e descompactá-lo, assim, teremos o executável ppss. Para testar se está tudo certo, basta executar:

./ppss

E uma mensagem similar à abaixo, será exibida:
|P|P|S|S| Distributed Parallel Processing Shell Script 2.97

usage: ./ppss [[ -d <sourcedir> | -f <sourcefile> ]] [[ -c '<command> "$ITEM"' ]]
        [[ -C <configfile> ]] [[ -j ]] [[ -l <logfile> ]] [[ -p <# jobs> ]]
        [[ -q ]] [[ -D <delay> ]] [[ -h ]] [[ --help ]] [[ -r ]] [[ --daemon ]]

Examples:
        ./ppss -d /dir/with/some/files -c 'gzip '
        ./ppss -d /dir/with/some/files -c 'cp "$ITEM" /tmp' -p 2
        ./ppss -f <file> -c 'wget -q -P /destination/directory "$ITEM"' -p 10


Assim, podemos começar a desenvolver scripts mirabolantes para as nossas tarefas.

    Próxima página

Páginas do artigo
   1. Introdução - PPSS
   2. Convertendo arquivos de áudio em paralelo
Outros artigos deste autor

Zabbix + SMS = GoogleCL (Google Command Line)

Leitura recomendada

Brincando com pseudoterminais e redirecionamentos

Ingressando estações de trabalho Ubuntu no AD com Closed In Directory

Assinatura de documentos PDF em lote via Bash

Aviso de queda de Internet via Sendxmpp

Script com muitas utilidades para arquivos e pastas

  
Comentários
[1] Comentário enviado por drc em 10/01/2013 - 10:26h

Parabéns pelo artigo, ficou muito bem escrito.
vou fazer um teste no meu servidor de homologação rodando progress. a rotina de backup on-line é muito dispendiosa para meu server.

[2] Comentário enviado por julio_hoffimann em 12/01/2013 - 11:55h

Ótimo artigo Eduardo, parabéns!

Abs.

[3] Comentário enviado por albfneto em 13/01/2013 - 15:05h

Muito bom esse script, sabe se pode ser usado para conversão de vídeo, computação distribuida (tipo BOINC) etc... e como se
faz?
não sou profissional de TI.

[4] Comentário enviado por edul0pes em 14/01/2013 - 08:22h

Obrigado!

Alberto, você pode utilizar sim para conversão de vídeo, mais a implantação depende muito da sua topologia, a ideia de computação distribuída é um pouco diferente de processamento em paralelo, o PPSS visa a distribuição e controle do processamento em paralelo, como se você fizesse a mesma coisa em todos os núcleos do processador ao mesmo tempo e não tarefas diferentes por núcleo.

Entende?

Abs

[5] Comentário enviado por phoemur em 22/07/2013 - 23:22h

Costumo usar para isso multithreading com xargs e funciona bem...

por exemplo:

find . -iname *.wav -print0 | xargs -0 -i -P0 lame --quiet --preset insane {} {}.mp3

A opção -P do xargs indica quantos processos simultâneos você quer rodar... se utilizar -P0 como no exemplo você deixa o gerenciamento de processamento por conta do xargs e ele vai executar o máximo possível de processos simultâneos...

[6] Comentário enviado por edul0pes em 23/07/2013 - 09:05h

Fala phoemur,

O xargs também é uma alternativa com certeza, o legal do ppss é a geração automática dos logs, assim, eu faço o monitoramento desses arquivos com o Zabbix e caso ocorra qualquer problema em uma conversão eu disparo uma trigger e posso tomar as ações necessárias. Caso o cenário não tenha essa necessidade o xargs resolve muito bem a tarefa. Valeu pela dica.

Abs

[7] Comentário enviado por edul0pes em 23/07/2013 - 09:06h






Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts