主頁(yè) > 知識(shí)庫(kù) > 獲知Linux的進(jìn)程運(yùn)行在哪個(gè)CPU內(nèi)核上的方法

獲知Linux的進(jìn)程運(yùn)行在哪個(gè)CPU內(nèi)核上的方法

熱門(mén)標(biāo)簽:百度地圖標(biāo)注未成功 中山防封卡電銷(xiāo)卡辦理 常熟外呼系統(tǒng) 地圖上標(biāo)注點(diǎn)位的圖標(biāo) 電話機(jī)器人服務(wù)器部署 拉薩銷(xiāo)售外呼系統(tǒng)軟件 文山外呼營(yíng)銷(xiāo)系統(tǒng) 江蘇小型外呼系統(tǒng)軟件 電銷(xiāo)語(yǔ)音機(jī)器人哪個(gè)好

當(dāng)你在 多核 NUMA 處理器上運(yùn)行需要較高性能的 HPC(高性能計(jì)算)程序或非常消耗網(wǎng)絡(luò)資源的程序時(shí),CPU/memory 的親和力是限度其發(fā)揮最大性能的重要因素之一。在同一 NUMA 節(jié)點(diǎn)上調(diào)度最相關(guān)的進(jìn)程可以減少緩慢的遠(yuǎn)程內(nèi)存訪問(wèn)。像英特爾 Sandy Bridge 處理器,該處理器有一個(gè)集成的 PCIe 控制器,你可以在同一 NUMA 節(jié)點(diǎn)上調(diào)度網(wǎng)絡(luò) I/O 負(fù)載(如網(wǎng)卡)來(lái)突破 PCI 到 CPU 親和力限制。

作為性能優(yōu)化和故障排除的一部分,你可能想知道特定的進(jìn)程被調(diào)度到哪個(gè) CPU 內(nèi)核(或 NUMA 節(jié)點(diǎn))上運(yùn)行。

這里有幾種方法可以 找出哪個(gè) CPU 內(nèi)核被調(diào)度來(lái)運(yùn)行給定的 Linux 進(jìn)程或線程。

方法一
如果一個(gè)進(jìn)程使用 taskset 命令明確的被固定(pinned)到 CPU 的特定內(nèi)核上,你可以使用 taskset 命令找出被固定的 CPU 內(nèi)核:

復(fù)制代碼
代碼如下:

$ taskset -c -p pid>

例如, 如果你對(duì) PID 5357 這個(gè)進(jìn)程有興趣:

復(fù)制代碼
代碼如下:

$ taskset -c -p 5357

pid 5357's current affinity list: 5
輸出顯示這個(gè)過(guò)程被固定在 CPU 內(nèi)核 5上。

但是,如果你沒(méi)有明確固定進(jìn)程到任何 CPU 內(nèi)核,你會(huì)得到類(lèi)似下面的親和力列表。

pid 5357's current affinity list: 0-11
輸出表明該進(jìn)程可能會(huì)被安排在從0到11中的任何一個(gè) CPU 內(nèi)核。在這種情況下,taskset 不能識(shí)別該進(jìn)程當(dāng)前被分配給哪個(gè) CPU 內(nèi)核,你應(yīng)該使用如下所述的方法。

方法二
ps 命令可以告訴你每個(gè)進(jìn)程/線程目前分配到的 (在“PSR”列)CPU ID。

復(fù)制代碼
代碼如下:

$ ps -o pid,psr,comm -p pid>

  PID PSR COMMAND
 5357  10 prog
輸出表示進(jìn)程的 PID 為 5357(名為"prog")目前在CPU 內(nèi)核 10 上運(yùn)行著。如果該過(guò)程沒(méi)有被固定,PSR 列會(huì)根據(jù)內(nèi)核可能調(diào)度該進(jìn)程到不同內(nèi)核而改變顯示。

方法三
top 命令也可以顯示 CPU 被分配給哪個(gè)進(jìn)程。首先,在top 命令中使用“P”選項(xiàng)。然后按“f”鍵,顯示中會(huì)出現(xiàn) "Last used CPU" 列。目前使用的 CPU 內(nèi)核將出現(xiàn)在 “P”(或“PSR”)列下。

復(fù)制代碼
代碼如下:

$ top -p 5357


相比于 ps 命令,使用 top 命令的好處是,你可以連續(xù)監(jiān)視隨著時(shí)間的改變, CPU 是如何分配的。

方法四
另一種來(lái)檢查一個(gè)進(jìn)程/線程當(dāng)前使用的是哪個(gè) CPU 內(nèi)核的方法是使用 htop 命令。

從命令行啟動(dòng) htop。按 鍵,進(jìn)入"Columns",在"Available Columns"下會(huì)添加 PROCESSOR。

每個(gè)進(jìn)程當(dāng)前使用的 CPU ID 將出現(xiàn)在“CPU”列中。

請(qǐng)注意,所有以前使用的命令 taskset,ps 和 top 分配CPU 內(nèi)核的 IDs 為 0,1,2,...,N-1。然而,htop 分配 CPU 內(nèi)核 IDs 從 1開(kāi)始(直到 N)。

標(biāo)簽:欽州 天門(mén) 景德鎮(zhèn) 河南 海北 黔南 鶴壁 威海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《獲知Linux的進(jìn)程運(yùn)行在哪個(gè)CPU內(nèi)核上的方法》,本文關(guān)鍵詞  獲知,Linux,的,進(jìn)程,運(yùn),行在,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《獲知Linux的進(jìn)程運(yùn)行在哪個(gè)CPU內(nèi)核上的方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于獲知Linux的進(jìn)程運(yùn)行在哪個(gè)CPU內(nèi)核上的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章