¿Cómo puedo configurar la afinidad del procesador de un proceso en Linux?

29

¿Cómo puedo configurar la afinidad del procesador de un proceso en Linux?

chillitom
fuente

Respuestas:

24

He usado el conjunto de tareas para esto. Si tiene un conjunto de tareas instalado, algo como:

taskset -c 1,3 -p 45678

configuraría el proceso con id 45678 para tener una afinidad con los cpus 1 y 3.

kbyrd
fuente
1
Una edición anónima sugirió que el comando debe ser taskset -p -c 1,3 45678más que taskset -c 1,3 -p 45678; es decir, que -c 1,3es una especificación de máscara y, como tal, debe colocarse entre el -py el pid.
G-Man dice 'Restablecer a Monica' el
7

Dentro del proceso, la llamada sería sched_setaffinity(), o para cosas de pthreads,pthread_setaffinity_np()

En una nota relacionada, si te preocupa la afinidad de la CPU de tu programa, puede valer la pena prestar atención también a cómo está haciendo la asignación de memoria. Los sistemas más grandes con memoria conectada a más de un controlador (es decir, múltiples zócalos de CPU, cada uno con el suyo propio) tendrán latencia variable y ancho de banda entre diferentes pares de CPU-memoria. También querrá examinar la afinidad de NUMA, utilizando el numactlcomando o las llamadas al sistema con las que funciona. Un programa en el que trabajé obtuvo una mejora del rendimiento del 10% de esto.

Phil Miller
fuente
3

Necesita instalar schedutils(utilidades del planificador de Linux). Lo he usado en mi escritorio Ubuntu.

Enlace SF

Hemant
fuente