首頁  >  文章  >  運維  >  linux怎麼查看進程在哪個cpu上

linux怎麼查看進程在哪個cpu上

WBOY
WBOY原創
2022-05-23 16:48:518709瀏覽

查看方法:1、利用top命令,該命令可以顯示進程在哪個CPU上運行,語法為「top -p 進程號」;2、利用taskset命令,該命令用於查看進程或線程運行在哪個CPU上,語法為「taskset -p 進程號」。

linux怎麼查看進程在哪個cpu上

本教學操作環境:linux7.3系統、Dell G3電腦。

linux怎麼查看進程在哪個cpu上

方法一:使用top指令

top 指令可以顯示行程在哪個CPU上執行,可以連續監視隨著時間的改變,該進程運行在哪個cpu上是否有變化。

使用步驟:

top -p [进程号],例如 top -p 3000

按下"F"鍵,使用上下鍵選擇P = Last Used Cpu,並按下空白鍵,出現「*」即代表選中,再按「 q"退出。

方法二:使用taskset指令

taskset可以查看具體某一程序(或執行緒)運行在哪個cpu上,也可以讓某個程式運行在某個或某些cpu上

taskset 參數選項:

(1)-p, --pid :操作現有的PID,不啟動新任務

(2 )-c, --cpu-list :指定處理器的數字列表,而不是位元遮罩。清單可以包含多個項目,以逗號和範圍分隔。例如,0、5、7、9 - 11。

1)顯示進程運行的CPU: -p參數

範例1:

[root@localhost ~]# taskset -p 21184

顯示結果:

pid 21184’s current affinity mask: ffffff

註:21184是進程編號。顯示結果的ffffff其實是二進位24個低位元均為1的bitmask,每一個1對應於1個CPU,表示該進程在24個CPU上運作。

範例2:

[root@localhost ~]# taskset -p 2030

顯示結果:

pid2030’s current affinity mask: f

註:說明sshd在4顆CPU上隨機進行切換。

範例3:

[root@localhost ~]# taskset -p 2726

顯示結果:

pid 2726’s current affinity mask: 3

註:顯示的十進位數字3轉換為2進位為最低兩個是1,每個1對應一個cpu,所以進程運行在2個cpu上。

*注意:*cpu的標號是從0開始的,所以cpu1表示第二個cpu(第一個cpu的標號是0)。

關於換算方式

8個核心的CPU ID: 7 6 5 4 3 2 1 0

對應10的十進位數: 128 64 32 16 8 4 2 1

十六進位的16個數是:0、1、2、3、4、5、6、7、8、9、A、B、C、D、 E、F

對應每一個16進位的二進位位元:0=0000,1=0001,2=0010,3=0011,4=0100,5=0101,6=0110,7=0111, 8=1000,9=1001,A=1010,

B=1011,C=1100,D=1101,E=1110,F=1111

那麼例如出現pid 8987's current affinity mask: ff ff是16進制,轉換二進位:11111111,意思是sshd在8個CPU上進行卻換!所以對應每一個數值!

比如說16進位的40,那麼轉換二進位01000000,意思是在第7塊CPU上運作

推薦學習:Linux影片教學

以上是linux怎麼查看進程在哪個cpu上的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn