2017-09-11 6 views
0

Ich habe den folgenden Code in einem Bash-Skript:Prozessor Affinität unter Linux mit taskset

echo "bash pid => $$"; 
echo "processor affinity before => $(taskset -p $$)" 
taskset -cp ${AN_INTEGER} $$ 
echo "processor affinity after => $(taskset -p $$)" 

ich diese Ausgabe:

processor affinity before => pid 5047's current affinity mask: ff 
pid 5047's current affinity list: 0-7 
pid 5047's new affinity list: 1 
processor affinity after => pid 5047's current affinity mask: 2 

weiß jemand, was das bedeutet?

Der Grund, warum ich begann mit Prozessoraffinität zu verwirren ist, weil ich mehrere Bash Child Prozesse starten würde, und alle Bash Kind Prozess Affinitäten hatte den Wert "ff", so schien es, als ob alle auf die gleiche CPU.

Antwort

1

Die Affinität Maske die Gruppe von Prozessoren steuert, dass ein Prozess auf ausführen kann - nicht einen einzigen bestimmten Prozessor. Bits, die in dieser Maske eine 1 sind, stellen einen Prozessor dar, auf dem der Prozess ausgeführt werden kann. Da Sie festgelegt haben, dass dieser Prozess nur auf CPU 1 ausgeführt werden soll, lautet die Affinitätsmaske jetzt 0b00000010 oder 2.

+1

huh, ich denke, ich könnte den Unterschied zwischen Affinitätsliste und Affinitätsmaske nachschlagen –