Come posso impostare l'affinità del processore di un processo su Linux?


29

Come posso impostare l'affinità del processore di un processo su Linux?

Risposte:


24

Ho usato tasket per questo. Se hai installato tasket, qualcosa del tipo:

taskset -c 1,3 -p 45678

imposterebbe il processo con ID 45678 per avere un'affinità con cpus 1 e 3.


1
Una modifica anonima ha suggerito che il comando deve essere taskset -p -c 1,3 45678piuttosto che taskset -c 1,3 -p 45678; vale a dire che -c 1,3è una specifica di maschera e, come tale, deve essere posizionata tra la -pe la pid.
G-Man dice "Ripristina Monica" il

7

All'interno del processo, la chiamata sarebbe sched_setaffinity(), o per roba di pthreads,pthread_setaffinity_np()

In una nota correlata, se ti preoccupi dell'affinità della CPU del tuo programma, potrebbe essere utile prestare attenzione anche a come sta facendo l'allocazione di memoria. I sistemi più grandi con memoria collegata a più di un controller (ovvero più socket CPU, ognuno con i propri) avranno latenza e larghezza di banda variabili tra coppie di memoria CPU diverse. Ti consigliamo di esaminare anche l'affinità NUMA, utilizzando il numactlcomando o le chiamate di sistema con cui funziona. Un programma a cui ho lavorato ha ottenuto un miglioramento delle prestazioni del 10% da questo.


3

Devi installare schedutils (utilità di pianificazione di Linux). L'ho usato sul mio desktop Ubuntu.

Collegamento SF


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.