puoi usare ps
.
es. avere un processo Python con due thread occupati su CPU dual core:
$ 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 è l'id della CPU a cui è attualmente assegnato il thread)
vedi che i thread sono in esecuzione sullo stesso core della cpu (a causa di GIL)
eseguendo lo stesso script python in jython, vediamo che lo script utilizza entrambi i core (e ci sono molti altri servizi o qualsiasi thread, che sono quasi inattivi):
$ 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
è possibile elaborare l'output e calcolare la CPU totale per ogni core della CPU.
Sfortunatamente, questo approccio non sembra essere affidabile al 100%, a volte vedo che nel primo caso i due thread di lavoro sono segnalati come separati da ciascun core della CPU, oppure nel secondo caso i due thread sono attivati lo stesso nucleo ..
I
per attivare la modalità Irix (al contrario della modalità Solaris ). Quandoon
, la percentuale visualizzata nell'elenco dei processi è relativa a un thread della CPU . Quandooff
, la suddetta percentuale viene visualizzata relativamente alla capacità complessiva della CPU (ovvero TUTTI i thread , ovvero tutti i core).