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.662 ]

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

O comando tput

GNU Parallel: criando atividades em paralelo com shell script

Entendendo, criando e editando pacotes Debian (.deb)

Desligar servidores quando o nobreak entra na bateria e envio de aviso por e-mail

Blacklist - O que é? Como consultar o IP? Como automatizar?

  
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