Aprovecha cada núcleo de tu procesador
Este 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 |
Para el núcleo 1: taskset 0x00000001 ./proceso |
Espero haya sido útil 😀