Docente

Páginas: 11 (2745 palabras) Publicado: 16 de julio de 2013
PRÁCTICO • GNU Parallel

mheld, 123 RF

Más de una cosa a la vez con GNU Parallel

Líneas Paralelas
GNU Parallel lleva a la línea de comandos las ventajas del procesamiento paralelo. POR BEN MARTIN

Ú

ltimamente se tiende a realizar
más de una tarea en varios
núcleos simultáneamente. Y es
que hoy día casi todo el mundo cuenta
con una CPU dual (o quad) core en su
portátil, eincluso con 4, 6, 12 ó 16
núcleos en servidores y máquinas de
escritorio. Con todos estos núcleos a
nuestro alrededor, podría parecer difícil
la tarea de conseguir que la línea de
comandos sea más efectiva. Después de
todo, ésta procesa las cosas en serie, ejecutando los comandos uno a uno.
A fin de aprovechar las ventajas de las
modernas máquinas multiprocesador, la
mayoría de los programascon gran carga

42

Número 67

de CPU se han modificado para que puedan ejecutar subtareas paralelamente.
Por ejemplo, en lugar de usar bzip2 para
comprimir un tarball, con pbzip2 se pueden utilizar varios núcleos simultáneamente para la compresión. De igual
modo, la codificación de vídeo y audio
puede verse beneficiada por la existencia
de más de una CPU durante el proceso
decodificación.
GNU parallel [1] nos permite aprovechar los distintos núcleos, pudiendo
repartir la carga de trabajo incluso entre
otras máquinas de la red. La ejecución
de comandos remota hace uso de ssh
para acceder a otras máquinas, así como

WWW.LINUX- MAGAZINE.ES

de conexiones Control Master [2] para
evitar la creación de nuevas conexiones
ssh por cada tarea enviada.
Quien ya estéfamiliarizado con el
comando xargs [3], podrá utilizar GNU
Parallel como alternativa y ejecutar las
cosas de la forma correcta.
Sorprendentemente, el comando parallel no estaba incluido en las versiones
de desarrollo de Fedora 13 ni Fedora
Rawhide en el momento de escribir estas
líneas. Por suerte, parallel es un script
escrito en Perl que se puede instalar
fácilmente desde su tarball de fuentescon ./configure; make; sudo make install. Hay documentación disponible

GNU Parallel • PRÁCTICO

tanto en HTML como en forma de página
de manual.

Vayamos al Grano
Al igual que su núcleo, GNU Parallel
trata de ejecutar programas en archivos.
El uso más común consiste en recibir un
listado de archivos por la entrada estándar y ejecutar un comando sobre cada
archivo.
Para usarlo deeste modo, lo normal
es ejecutar el comando find para determinar sobre qué archivos se va a trabajar, utilizando quizá alguna de las
opciones de filtrado de find, y enviar la
salida a parallel. Parallel irá cogiendo
los nombres de archivo de esa lista y
ejecutará sobre cada uno de ellos el
comando, sin esperar hasta que termine
el anterior.
Debido a que algunos comandos se
ejecutan muyrápido, puede que el programa sólo tarde en iniciar el tiempo que
se tarde en procesar el archivo. Para acelerar estos casos específicos, le podemos
pasar la opción -m a Parallel, que le
indica que puede tomar varios nombres
de archivo cada vez. Con el parámetro -m, Parallel le pasará los archivos al
comando todos juntos.
Al ejecutar Parallel sobre una cantidad
grande de archivos, llega un puntoen el
que la línea de comandos es demasiado
larga como para que el sistema pueda
procesarla. Antes de que esto ocurra,
Parallel ejecuta el comando y arranca
una invocación nueva, creando una
nueva línea. Por lo tanto, si procesamos
40000 archivos con Parallel, es posible
que el programa se ejecute 4 veces, procesando 10000 archivos cada vez. Podemos consultar los límites de Parallel ennuestra distribución de Linux ejecutándolo con el parámetro --show-limits.
Además de recibir el listado de archivos desde la entrada estándar, Parallel
puede recibir también un listado con el
juego de comandos completo. De este
modo se pueden ejecutar varios comandos de una vez; basta con poner todos
los comandos en un archivo y enviárselo
a Parallel, como se muestra en el Listado
1. En...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Docente
  • Docente
  • Estado docente
  • Docente
  • Docente
  • Docente
  • Docente
  • Docente

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS