Skip to content

Sacarle el máximo provecho a tu procesador de x núcleos

4/marzo/2010

Casi todos los computadores vendidos hoy en día tienen al menos una CPU de doble núcleo, incluso es posible adquirir procesadores de tres o cuatro núcleos que son cada vez más baratos y obtener un buen nivel para el futuro. ¿Pero cómo utilizar ese resplandeciente procesador a todo su potencial, con las aplicaciones que sólo utilizan un núcleo? La respuesta simple: con Linux.  El sistema operativo del pingüino tiene fuertes capacidades multitareas como todos los sistemas operativos tipo UNIX, y existe una posibilidad fácil de paralelizar las tareas que normalmente sólo utilizarían un solo núcleo de un procesador con x núcleos.

Sin embargo, tengo que advertirles que sino estás familiarizado con la consola, es mejor que comiences a aprender su uso, porque todo el trabajo se realiza desde ahí, desde esa negra ventana. No hay navegador, ni fantásticas interfaces gráficas de usuario, ni adornos visuales, solo comandos de texto.

Si estás dispuesto, entonces te recomiendo que leas el artículo Fully Utilizing Your X-Core CPU que han publicado en HowtoForge y aprendas con detalles la forma de sacar el máximo provecho a tu procesador. Puedes ver una breve explicación después del salto.

A modo de resumen te puedo indicar algunos de los pasos necesarios para comenzar a utilizar tu flamante CPU.

Descargar el script (actualmente no hay paquetes para las principales distros Linux, así que la instalación se debe realizar de forma manual)

wget http://ppss.googlecode.com/files/ppss-2.50.tgz
tar xvzf ppss-2.50.tgz -C /usr/local/bin
chown root:root /usr/local/bin/ppss.sh && chmod a+rx /usr/local/bin/ppss.sh

Si llamas al proceso sin parámetros, se presenta la siguiente información:

$ ppss.sh 

|P|P|S|S| Distributed Parallel Processing Shell Script 2.50

usage: /usr/local/bin/ppss.sh [ -d  | -f  ]  [ -c ' "$ITEM"' ]
                 [ -C  ]  [ -j ] [ -l  ] [ -p <# jobs> ]
                 [ -D  ] [ -h ] [ --help ]

Examples:
                 /usr/local/bin/ppss.sh -d /dir/with/some/files -c 'gzip '
                 /usr/local/bin/ppss.sh -d /dir/with/some/files -c 'gzip "$ITEM"' -D 5
                 /usr/local/bin/ppss.sh -d /dir/with/some/files -c 'cp "$ITEM" /tmp' -p 2

El script ya se encuentra instalado.

Un ejemplo

Un trabajo que se adapta perfectamente al paralelizado con ppss.sh es por ejemplo, cuando se quiere transformar un montón de archivos .flac al formato oggvorbis, para escuchar en tu reproductor portátil. Esto podría fácilmente ser hecho en un bucle, ya que tenemos la suerte de que oggenc es capaz de leer los archivos .flac:

for i in *.flac; do oggenc -q3 -o ${i%%flac}ogg $i; done

Esto sería una tarea secuencial y solo uno de los núcleos sería utilizado como se puede apreciar en la siguiente captura:

Tasks: 112 total,   2 running, 110 sleeping,   0 stopped,   0 zombie
Cpu(s): 56.9%us,  0.6%sy,  0.0%ni, 41.2%id,  1.1%wa,  0.0%hi,  0.2%si, 0.0%st
Mem:   4062968k total,  2303836k used,  1759132k free,    36268k buffers
Swap:   522072k total,        0k used,   522072k free,  1558228k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
7248 root      20   0 19780 2604 1468 R   88  0.1   0:05.02 oggenc
...

Para realizar la misma tarea, pero paralelizando el proceso, se debería realizar lo siguiente:

ppss.sh -d /ruta/a/tus/archivos/flac/ -c 'oggenc $ITEM -q3 -o "${ITEM%%.flac}.ogg"'

Ahora vemos que todos los núcleos son utilizados:

Tasks: 117 total,   3 running, 114 sleeping,   0 stopped,   0 zombie
Cpu(s): 99.4%us,  0.6%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si, 0.0%st
Mem:   4062968k total,  2070004k used,  1992964k free,    38916k buffers
Swap:   522072k total,        0k used,   522072k free,  1709844k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
10933 root      20   0 19856 2600 1468 R   99  0.1   0:06.20 oggenc
10854 root      20   0 19856 2600 1468 R   87  0.1   0:08.51 oggenc
...

Si deseas aprender como sacarle mayor provecho a tu CPU, puedes leer el artículo original, en el cual se muestran una variedad de ejemplos y datos que explican la forma de uso del script.

Fuente: Fully Utilizing Your X-Core CPU (Linux Today)

Anuncios
One Comment
  1. Alfredo permalink
    4/marzo/2010 1:32 pm

    Interresante, tengo un procesador AMD de tres núcleos, aunque mi trabajo no exige mucho de mi pc, es bueno saber estas cosas.
    Saludos

Los comentarios están cerrados.

A %d blogueros les gusta esto: