Sie können verwenden ps
.
zB mit Python-Prozess mit zwei ausgelasteten Threads auf Dual-Core-CPU:
$ ps -p 29492 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
29492 29492 1 0.0
29492 29493 1 48.7
29492 29494 1 51.9
(PSR ist die CPU-ID, der der Thread derzeit zugewiesen ist.)
Sie sehen, dass die Threads auf demselben CPU-Kern laufen (wegen GIL)
Wenn wir dasselbe Python-Skript in Jython ausführen, sehen wir, dass das Skript beide Kerne verwendet (und es gibt viele andere Dienste oder andere Threads, die fast inaktiv sind):
$ ps -p 28671 -L -o pid,tid,psr,pcpu
PID TID PSR %CPU
28671 28671 1 0.0
28671 28672 0 4.4
28671 28673 0 0.6
28671 28674 0 0.5
28671 28675 0 2.3
28671 28676 0 0.0
28671 28677 1 0.0
28671 28678 1 0.0
28671 28679 0 4.6
28671 28680 0 4.4
28671 28681 1 0.0
28671 28682 1 0.0
28671 28721 1 0.0
28671 28729 0 88.6
28671 28730 1 88.5
Sie können die Ausgabe verarbeiten und die Gesamt-CPU für jeden CPU-Kern berechnen.
Leider scheint dieser Ansatz nicht 100% zuverlässig zu sein. Manchmal sehe ich, dass im ersten Fall die beiden Arbeitsthreads von jedem CPU-Kern getrennt sind, oder im letzteren Fall, dass die beiden Threads eingeschaltet sind der gleiche Kern ..
I
um den Irix-Modus umzuschalten (im Gegensatz zum Solaris-Modus ). Wennon
, ist der in der Prozessliste angezeigte Prozentsatz relativ zu einem CPU-Thread . Wennoff
, wird der Prozentsatz relativ zur CPU-Gesamtkapazität angezeigt (dh ALLE Threads - auch bekannt als alle Kerne).