numactl --physcpubind
Ich habe die Option numactl mit der Option --physcpubind verwendet. Handbuch sagt:
--physcpubind=cpus, -C cpus
Only execute process on cpus. Etc...
Angenommen, ich habe ein NUMA-System mit 3 NUMA-Knoten, von denen jeder 4 Kerne hat. NUMA-Knoten 0 hat 0, 1, 2, 3 als Kernnummern. NUMA-Knoten 1 hat 4,5,6,7 und NUMA-Knoten 2 hat 8,9,10,11. Meine Frage ist, lassen Sie uns sagen, dass ich das Programm wie folgt ausführe:
export OMP_NUM_THREADS=6
numactl --physcpubind=0,1,4,5,8,9 ./program
d.h. ich starte mein Programm mit 6 Threads und fordere sie auf, sich auf den CPU-Kernen 0,1,4,5,8,9 zu befinden. Zum Beispiel, wenn irgendwann während des Programms den Threads 0-5 die CPU-Kerne 0,1,4,5,8,9 (setup1) zugewiesen werden. Ist es möglich, dass zu einem anderen Zeitpunkt während der Programmausführung der Thread 0 beispielsweise auf dem CPU-Kern 9 ausgeführt wird, und so weiter? Das heißt Wird es eine Thread-Migration zwischen CPU-Kernen geben? Oder werden die Threads eindeutig an CPU-Kerne gebunden (wie in Setup1)? Vielen Dank.