¿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?

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.


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.


3

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

Enlace SF


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.