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

當(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)核:
$ taskset -c -p <pid>
例如, 如果你對(duì) PID 5357 這個(gè)進(jìn)程有興趣:
$ 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ì)得到類似下面的親和力列表。
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。
$ 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”)列下。
$ 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)。
相關(guān)文章
詳解Linux中監(jiān)控CPU與虛擬內(nèi)存運(yùn)行信息的命令用法
這篇文章主要介紹了詳解Linux中監(jiān)控CPU與內(nèi)存運(yùn)行信息的命令用法,分別講解了mpstat和vmstat命令的使用實(shí)例,需要的朋友可以參考下2016-03-04winpe系統(tǒng)怎么給cpu測(cè)速?cpu測(cè)速的SuperPi教程
winpe系統(tǒng)怎么給cpu測(cè)速?很多朋友想給自己的cup測(cè)速,但是不知道怎么測(cè),今天我們就來(lái)為大家解決這個(gè)問(wèn)題,下面分享cpu測(cè)速的SuperPi教程,需要的朋友可以參考下2016-02-15無(wú)法升級(jí)win10檢測(cè)提示CPU溫度過(guò)高怎么辦?解決方法
如今很多用戶都選擇將系統(tǒng)升級(jí)到win10正式版。但有部分用戶在使用QQ電腦管家升級(jí)到Win10系統(tǒng)時(shí)遇到了問(wèn)題,得到了CPU溫度過(guò)高無(wú)法升級(jí)的檢測(cè)結(jié)果。怎么回事?下面就一起來(lái)2016-02-03win10系統(tǒng)cpu使用率過(guò)高達(dá)到70% 的解決方法
win10系統(tǒng)cpu使用率過(guò)高怎么辦?有朋友們最近反映win10系統(tǒng)cpu使用率過(guò)高,該如何解決這個(gè)問(wèn)題呢?下面小編就給大家?guī)?lái)win10系統(tǒng)cpu使用率過(guò)高達(dá)到70% 的解決方法,希望可2016-01-22WindowsXp系統(tǒng)CPU/硬盤溫度很高怎么辦 XP系統(tǒng)CPU/硬盤溫度過(guò)高的解決方
最近,有winxp用戶反映在電腦cpu溫度很高,從而容易造成藍(lán)屏或死機(jī)等問(wèn)題的出現(xiàn),那么如何降低CPU或硬盤溫度呢?本文將提供XP系統(tǒng)CPU/硬盤溫度過(guò)高的解決方法供大家了解,2015-11-20Win 7如何判斷CPU溫度過(guò)高?判斷CPU溫度過(guò)高的方法
如何判斷Win 7系統(tǒng)下CPU溫度過(guò)高?本文將提供判斷CPU溫度過(guò)高的兩種方法供大家了解2015-09-09- Windows10系統(tǒng)運(yùn)行時(shí)CPU使用率高該怎辦?CPU使用率太高,可使CPU溫度高,電腦運(yùn)行卡,但是造成cpu使用率高的情況很多,下面分享最容易被忽略的四種情況,需要的朋友可以參2015-09-08
win10 cpu占用高怎么辦?win10系統(tǒng)cpu占用率高現(xiàn)象的解決辦法介紹
Win10系統(tǒng)對(duì)硬件的要求并沒(méi)有提高,但是在使用win10的過(guò)程中還會(huì)出現(xiàn)win10 cpu占用率高的情況,那么,win10 cpu占用高怎么辦呢?針對(duì)此問(wèn)題,本文就為大家進(jìn)行解答2015-09-06微軟Win 10操作系統(tǒng)CPU使用率居高不下怎么辦?試試這些方法
微軟已經(jīng)正式發(fā)布一段時(shí)日,而如果你在使用Windows10的過(guò)程中遇到了CPU占用率居高不下的問(wèn)題,可參考以下方法來(lái)解決。2015-09-04win10 cpu 磁盤 100% 運(yùn)行及內(nèi)存使用量變大 優(yōu)化匯總
很多朋友都在裝了win10之后出現(xiàn)了“win10 cpu或是 磁盤100%運(yùn)行”的問(wèn)題,如何解決呢,下面小編就為大家介紹win10 cpu 磁盤 100% 運(yùn)行及內(nèi)存使用量變大 優(yōu)化匯總,來(lái)看看吧2015-08-10