Wie kann ich die Prozessoraffinität eines Prozesses unter Linux einstellen?

29

Wie kann ich die Prozessoraffinität eines Prozesses unter Linux einstellen?

Chillitom
quelle

Antworten:

24

Ich habe Task-Set dafür verwendet. Wenn Sie ein Task-Set installiert haben, etwa:

taskset -c 1,3 -p 45678

würde den Prozess mit der ID 45678 so einstellen, dass er eine Affinität zu CPU 1 und 3 hat.

kbyrd
quelle
1
Ein anonymer bearbeiten vorgeschlagen , dass der Befehl sein muss , taskset -p -c 1,3 45678statt taskset -c 1,3 -p 45678; dh, dass das -c 1,3eine Maskenspezifikation ist und als solche zwischen das -pund das gesetzt werden muss pid.
G-Man sagt, dass Monica
7

Innerhalb des Prozesses wäre der Aufruf sched_setaffinity(), oder für pthreads Zeug,pthread_setaffinity_np()

Wenn Sie sich Sorgen über die CPU-Affinität Ihres Programms machen, kann es sich lohnen, auch auf die Speicherzuweisung zu achten. Größere Systeme mit Speicher, der an mehr als einen Controller angeschlossen ist (dh mehrere CPU-Sockel, jeder mit einem eigenen), weisen eine variable Latenz und Bandbreite zwischen verschiedenen CPU-Speicherpaaren auf. Sie möchten auch die NUMA-Affinität untersuchen, indem Sie den numactlBefehl oder die Systemaufrufe verwenden, mit denen er funktioniert. Bei einem Programm, an dem ich gearbeitet habe, wurde die Leistung um 10% verbessert.

Phil Miller
quelle
3

Sie müssen installieren schedutils(Linux Scheduler-Dienstprogramme). Ich habe es auf meinem Ubuntu Desktop verwendet.

SF Link

Hemant
quelle