Asignar un proceso a un núcleo del procesador

16 10 2013

Para poder asignar un núcleo a un proceso del sistema, primero debemos conocer qué estado tiene, este ejemplo nos reporta un AFFINITY de 0xf o lo que es lo mismo, que puede estar en cualquier núcleo:
# schedtool 2586
PID 2586: PRIO 0, POLICY N: SCHED_NORMAL , NICE 0, AFFINITY 0xf

En cambio, este otro tiene un núcleo asigando:
# schedtool 4
PID 4: PRIO 0, POLICY N: SCHED_NORMAL , NICE 0, AFFINITY 0x1

Para asignar el núcleo 4, por ejemplo, al proceso 2586 se debe hacer lo siguiente:
# taskset -p -c 3 2586
pid 2586's current affinity list: 0-3
pid 2586's new affinity list: 3

Ahora schedtool ya devuelve la información que se buscaba:
# schedtool 2586
PID 2586: PRIO 0, POLICY N: SCHED_NORMAL , NICE 0, AFFINITY 0x8

Nota:

0x1 -> only run on CPU0
0x2 -> only run on CPU1
0x4 -> only run on CPU2
0x8 -> only run on CPU3 … and so on.

Multi-target CPUs may be specified using bitwise OR of the values:

0x7 -> run on CPUs 0, 1, 2 but NOT on 4
0x3 -> run only on CPUs 0 and 1

The default is to run a process on all CPUs, giving a mask of
0xf for all 4 CPUs
0xff for all 8 CPUs

Más info:
http://users.sdsc.edu/~glockwood/comp/affinity.php
http://manpages.ubuntu.com/manpages/gutsy/man8/schedtool.8.html

Advertisements

Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: