Der Befehl "top" kann dabei helfen, er hat keine CPU-gruppierte Liste von Threads, sondern Sie können die Liste der Threads sehen (wahrscheinlich für einen einzelnen Prozess) und auf welchen CPU-Kernen die Threads laufen
top -H -p {PROC_ID}
dann f drücken um in die Feldauswahl zu gelangen, j um die CPU-Kernspalte zu aktivieren, und Enter anzuzeigen.
Sie können auch ps
verwenden , etwa so:
ps -mo pid,tid,%cpu,psr -p `pgrep BINARY-NAME`
Die folgende Antwort ist seit 2014 nicht mehr korrekt
Aufgaben schlafen nicht in einem bestimmten Kern. Und der Planer weiß nicht im Voraus, auf welchem Kern er einen Thread ausführen wird, da dies von der zukünftigen Nutzung dieser Kerne abhängt.
Um die gewünschten Informationen zu erhalten, schauen Sie in /proc/
31466 (v. Chr.) S 31348 31466 31348 34819 31466 4202496 2557 0 0 0 5006 16 0 0 20 0 1 0 10196934 121827328 1091 18446744073709551615 4194304 4271839 140737264235072 140737264232056 217976807456 0 0 0 137912326 18446744071581662243 0 0 17 3 0 0 0 0 0
Läuft derzeit nicht. Zuletzt ausgeführt auf Kern 3.
31466 (bc) R 31348 31466 31348 34819 31466 4202496 2557 0 0 0 3818 12 0 0 20 0 1 0 10196934 121827328 1091 184444440737095515 4194304 4271839 0 0 0 0 0
Wird derzeit auf Kern 2 ausgeführt.
Um zu sehen, was die restlichen Felder bedeuten, werfen Sie einen Blick auf die Linux-Kernel-Quelle – insbesondere do_task_stat
Funktion in fs/proc/array.c
oder Documentation/filesystems/stat.txt
.
Beachten Sie, dass alle diese Informationen zum Zeitpunkt, an dem Sie sie erhalten, veraltet sein können. Es war irgendwann wahr, als Sie die open
gemacht haben Aufruf der Datei in proc und wenn dieser Aufruf zurückgegeben wird.
Die Threads sind nicht erforderlich, um einen bestimmten Kern zu binden (wenn Sie ihn nicht gepinnt haben). Um das kontinuierliche Umschalten des Kerns zu sehen, können Sie daher (eine modifizierte Antwort von Dmitry) verwenden:
watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep BINARY-NAME\`
Zum Beispiel:
watch -tdn0.5 ps -mo pid,tid,%cpu,psr -p \`pgrep firefox\`