(1)查看各個CPU核的使用方式
sudo top -d 1
進入之後,按1,會出現下面的CPU使用方式,其中us列反映了各個CPU核的使用方式,百分比大說明該核在進行緊張的任務。
(2)查看哪個進程在哪個CPU核上運行
sudo top -d 1
進入之後,依次按f、j和空格,會出現如下(其中P列指示的是該進程最近使用的CPU核,如進程mencoder的P列為7,則表示mencoder最近在核7上運行,對於多線程甚至單線程的進程,在不同時刻會使用不同的CPU Core):
(3)vmstat查看整體的CPU使用方式
sudo vmstat 2 3
參數2表示每個2秒顯示一下結果,3表示顯示結果的數目。
cs列表示每秒環境切換次數,us表示使用者CPU時間。
(4)Intel工具powertop
sudo powertop
會顯示各個CPU核的使用百分比。
(5)gprof分析一個程式
假設程式源檔案為speedup-example.cpp
gcc speedup-example.cpp -o speedup-example -pg(注意-pg)
執行程式./speedup-example,會在目前的目錄產生gmon.out,這個檔案是我們查看程式運行情況的來源,接下來用gprof命令查看它:
gprof -b speedup-example gmon.out > Results.txt
這樣這個程式的運行資訊就在Results.txt中了。
(6)pidstat即時查看一個進程的CPU使用方式及環境切換情況
首先安裝
sudo apt-get install sysstat
接下來使用pidstat(下面的-p是與進程號連用,用於顯示特定進程的效能資訊,之後還可以指定每隔幾秒顯示,一共顯示幾條):
- pidstat 5 -p 15488(你要追蹤的進程的pid)
這樣就能即時顯示15488進程的CPU使用方式:
- pidstat -w —— 顯示每個進程的環境切換情況
pidstat -w -p 15488 2 —— 每隔2秒顯示15488進程的環境切換情況:
cswch/s —— 每秒該進程產生的voluntary context switches總數。voluntary context switches出現在訪問一個已經被佔用的資源,從而不得不掛起(即我們通常說的Synchronization Context Switches)
nvcswch/s —— 每秒該進程產生的involuntary context switches總數。involuntary context switches發生在自己的時間片用完或被更高的優先順序搶佔(包含Preemption Context Switches)