Ich habe Taskset dafür verwendet. Wenn Sie Taskset installiert haben, so etwas wie:
taskset -cp 0,2 45678
würde den Prozess mit der ID 45678 so einstellen, dass er eine Affinität zu den CPUs 1 und 3 hat.
Innerhalb des Prozesses wäre der Aufruf sched_setaffinity()
, oder für pthreads Sachen, pthread_setaffinity_np()
Wenn Sie sich Sorgen über die CPU-Affinität Ihres Programms machen, kann es sich in diesem Zusammenhang lohnen, auch darauf zu achten, wie es die Speicherzuweisung durchführt. Größere Systeme mit Speicher, der an mehr als einen Controller angeschlossen ist (d. h. mehrere CPU-Sockel, jeder mit seinem eigenen), haben eine variable Latenz und Bandbreite zwischen verschiedenen CPU-Speicher-Paaren. Sie sollten sich auch die NUMA-Affinität ansehen, indem Sie numactl
verwenden Befehl oder die Systemaufrufe, mit denen es arbeitet. Ein Programm, an dem ich gearbeitet habe, erzielte dadurch eine Leistungssteigerung von 10 %.
Sie müssen schedutils
installieren (Linux Scheduler Utilities). Ich verwende es auf meinem Ubuntu Desktop.
SF-Link