Processamento Paralelo com xargs 1


Com processadores multi-core semi-parados na maior parte das nossas tarefas e com a necessidade de processar grandes quantidades de informação / ficheiros é importante aproveitar toda a potencialidade de todos os núcleos.

Nos sistemas Unix (neste caso testei num sistema Linux com a distro Ubuntu) é possível separar uma tarefa em vários processos de forma a que a tarefa seja distribuida por mais que um núcleo do processador (no caso dos processadores multi-core) e por vários processos (jobs) que podem ser executados em simultâneo não dependendo que o primeiro acabe para executar o segundo podendo ter vários a correr ao mesmo tempo aumentando assim a performance da acção.

Este comando suporta a opção -P com a qual podemos especificar a quantidade de processos (jobs) a correr em paralelo.

Exemplo de Utilização

Decompondo o Exemplo

Listagem dos ficheiros da pasta

Xargs

“-P 0” utiliza o número máximo de processos
“-t” verbose mode activo

Cópia

“-R” copia de forma recursiva as pastas existentes
“{}” existe devido ao parâmetro “-i” do comando xargs utilizado, que corresponde a cada ficheiro/pasta que queremos copiar
“../novo” pasta de destino

Mais exemplos

Apagar todos os ficheiros com a extensão pdf

Converter ficheiros pdf (.pdf) para ficheiros de texto simples (.txt)

Nestes exemplos podem acrescentar sempre a opção “-P x” em que x é o valor de processos que querem a correr em paralelo, em algumas situações permite-nos aumentar a performance do processamento através da resolução de tarefas em paralelo como veremos a seguir.

Testes de Performance

Utilizando exactamente os mesmos ficheiros vemos alguma diferença a executar a mesma operação com e sem processamento distribuído da tarefa, que é realizada por diversos processos executados em paralelo.

Novamente podemos verificar um aumento na performance das acções com o processamento em paralelo.

Outras utilizações

Além destas tarefas que foram mostradas em cima digamos, do dia-a-dia de qualquer utilizador de um sistema Unix que tenha descoberto as maravilhas da consola, podem ser destacadas utilizações mais direccionadas a áreas de trabalho:

  • utilização do xargs em conjunto com o ping para detectar vários hosts simultaneamente diminuindo o tempo de espera para grandes pesquisas
  • utilização do xargs em conjunto com o nmap. O nmap nos scans não utiliza muita bandwidth para não ser detectado e então podemos fazer scan a mais que um host em simultâneo aproveitando as capacidades da ligação e da máquina
  • conversão de discografias completas ou de albuns inteiros de fotos

Mais ideias diferentes?

Man Pages

$ man cp
$ man rm
$ man xargs
$ man ls
$ man find


Leave a Reply

One thought on “Processamento Paralelo com xargs