Ich habe Zugriff auf einen 8-Kern-Knoten eines Linux-Clusters. Wenn ich am Knoten angemeldet bin, kann ich mit diesem Befehl eine Liste der Prozessoren anzeigen:
more /proc/cpuinfo
In meinem 8-Kern-Knoten sind die Prozessoren von 0 bis 7 nummeriert. Jeder Prozessor ist eine Intel Xeon-CPU (E5430 bei 2,66 GHz).
Angenommen, ich rufe das Programm foo
mit einigen Argumenten auf args
:
foo args
Die foo
Ausführung des Programms dauert lange (z. B. Stunden oder Tage). Ist es nach dem Aufruf foo
möglich, den bestimmten Prozessor (dh 0 bis 7) zu bestimmen , auf dem ausgeführt foo
wird? Das top
Programm zeigt mir die Prozess - ID und ähnliche Informationen, aber ich sehe den Prozessor nicht Nummer . Sind solche Informationen verfügbar?
foo
zwei verschiedenen Prozessoren zuweisen kann . Wenn ichfoo
einmal anrufe, läuft es mit%CPU
fast 100% (lauttop
). Wenn ich jedochfoo
ein zweites Mal aufrufe, werden beidefoo
Prozesse so ausgeführt, dass sich die Werte%CPU
für beide Prozesse auf weniger als 100% summieren (normalerweise etwa 45% für jedenfoo
Prozess). Für mich bedeutet dies, dass die beiden Aufrufefoo
auf demselben Prozessor ausgeführt werden (obwohl acht Prozessoren verfügbar sind). Ich möchte überprüfen, ob dies der Fall ist.Antworten:
ps
Sie können diese Informationen erhalten, wenn Sie nach derpsr
Spalte fragen (oder das-F
Flag verwenden, das sie enthält).Ex:
Oder:
Meine Shell lief auf CPU 2, als ich den ersten Befehl ausführte, auf CPU 0, als ich den zweiten ausführte. Beachten Sie, dass Prozesse die CPUs sehr, sehr schnell ändern können, sodass die tatsächlich angezeigten Informationen im Wesentlichen bereits veraltet sind.
Weitere Informationen in den Antworten dieser Super User-Frage:
Linux: Befehl, um die Prozessornummer zu kennen, in die ein Prozess geladen wird?
quelle
Mit dem
top
vonprocps
( in der Regel des Standard - Linux - Distributionen heutzutage), intop
drücken f, wechseln Sie zuP = Last User CPU (SMP)
und drücken Sie Spacedie Option (Sie können auch das Feld zum Beispiel bewegen , bevor dasCOMMAND
Feld mit dem RightSchlüssel und dann nach oben und unten). qum zum Hauptbildschirm zurückzukehren (wo Sie sehen, wie Ihr Prozess von Prozessor zu Prozessor wechselt, es sei denn, Sie haben ihn explizit so konfiguriert, dass er bei einem bleibt). Sie können drücken W, um dies als Standard zu speichern.Drücken Sie ?für Hilfe.
quelle
Der Befehl
taskset
ist das, wonach Sie suchen:Task-Set - Abrufen oder Festlegen der CPU-Affinität eines Prozesses
Beispiel
Eine Maske
f
bedeutet alle Prozessoren,0x00000001
wäre nur Prozessor 0.Zeigt die CPUs im Listenformat an. In diesem Beispiel habe ich 4 Kerne auf meinem Laptop.
Weitere Informationen finden Sie in der Manpage .
quelle
Sie können diese Informationen auch direkt von erhalten
/proc/[pid]/stat
. Es ist das 39. durch Leerzeichen getrennte Feld (seit Linux 2.2.8).Zum Beispiel, um anzuzeigen, auf welchem CPU-Prozessor die aktuelle Shell ausgeführt wird (in diesem Fall):
quelle