Posts Tagged ‘taskset’

Aprovecha cada núcleo de tu procesador

Posted on the Mayo 2nd, 2009 under GNU/Linux,Software Libre by

00_limpitoEste es un mini post. Si tenés un procesador doble núcleo (intel, amd,dual core, core 2 duo, quad core, etc) o más de un procesador, podés designar procesos a cada uno de estos, para que no interfieran entre ellos. Si bien esta es una tarea del planificado del sistema, uno puede indicarle cómo quiere que trate a algunos proceso (por ejemplo con la utilidad nice).

La idea es mostrarles cómo elegir en cuál núcleo, o en cuáles núcleos quiero que se ejecute un proceso. Esto se llama afinidad o affinity en inglés.

La utilidad que me permite hacer esto se conoce como taskset y permite tanto arrancar un proceso en los determinados procesadores de nuestro sistema, así como también cambiar su afinidad luego de estar corriendo estos (mediante el PID).

Para elegir los procesadores basta con pensar en cada procesador (o núcleo) como un bit en la siguiente máscara:

0 0 0 0 0 0 0 1      Procesador 1
0 0 0 0 0 0 1 0      Procesador 2
0 0 0 0 0 1 0 0      Procesador 3
0 0 0 0 1 0 0 0      Procesador 4
 
0 0 0 0 0 0 1 1      Procesador 1,2
0 0 0 0 0 1 1 0      Procesador 2,3

Como los valores deben ser escritos en hexa, el comando se termina ejecutando como:

Para el núcleo 2:
taskset 0x00000002 ./proceso

01_un_core

Para el núcleo 1:
taskset 0x00000001 ./proceso

02_el_otro_core

Espero haya sido útil 😀