Digamos que tengo una caja de cuatro núcleos y cuatro procesos idénticos, cada uno con diez hilos. ¿Es posible, en Linux, decir que el Proceso A solo se puede ejecutar en la CPU 0, el Proceso B solo se puede ejecutar en la CPU 1, etc.?
Digamos que tengo una caja de cuatro núcleos y cuatro procesos idénticos, cada uno con diez hilos. ¿Es posible, en Linux, decir que el Proceso A solo se puede ejecutar en la CPU 0, el Proceso B solo se puede ejecutar en la CPU 1, etc.?
taskset <affinity mask> -p <process>
es decir
taskset 1 -p 12345
configurar el proceso 12345 para usar solo el procesador / núcleo 1
La máscara de bits puede ser una lista (es decir, 1,3,4 para usar los núcleos 1 3 y 4 de un sistema 4+ core) o una máscara de bits en hexadecimal (0x0000000D la 1,3,4, 0x00000001 solo para el núcleo 1)
taskset
generalmente está en un paquete llamado shedutils
.
Editar: casi olvidado ... Si desea establecer la afinidad de un nuevo comando en lugar de cambiarlo para un proceso existente, use:
taskset <mask> <program> [<arg1>]...[<argN>]
uso del conjunto de tareas (util-linux 2.13-pre7): conjunto de tareas [opciones] [máscara | lista-cpu] [pid | cmd [args ...]] establece u obtiene la afinidad de un proceso
-p;
El comportamiento predeterminado es ejecutar un nuevo comando: taskset 03 sshd -b 1024 Puede recuperar la máscara de una tarea existente: taskset -p 700 O configurarlo: taskset -p 03 700 El formato de lista utiliza una lista separada por comas en lugar de un mask: taskset -pc 0,3,7-11 700 Los rangos en formato de lista pueden tomar un argumento de paso: por ejemplo, 0-31: 2 es equivalente a la máscara 0x55555555
siempre puede optimizar su servidor según lo necesite