ви можете використовувати ps
.
наприклад, з процесом python з двома зайнятими потоками на двоядерному процесорі:
$ 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 - це процесорний ідентифікатор, якому потоку призначено)
ви бачите, що потоки працюють на тому ж ядрі процесора (через GIL)
запускаючи той самий скрипт python у jython, ми бачимо, що скрипт використовує обидва ядра (і є багато інших служб або будь-яких потоків, які майже не працюють):
$ 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
Ви можете обробити вихід і обчислити загальний процесор для кожного ядра CPU.
На жаль, цей підхід не здається на 100% надійним, іноді я бачу, що в першому випадку, як повідомляється, два робочих потоки відокремлюються до кожного ядра процесора, або, в останньому випадку, два потоки повідомляються про те саме ядро ..
I
щоб увімкнути режим Irix (на відміну від режиму Solaris ). Колиon
, відсоток, відображений у списку процесів, є відносно потоку процесора . Колиoff
зазначений відсоток відображається відносно загальної ємності процесора (тобто ВСІ потоки - також усі ядра).