国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Linux如何統(tǒng)計進(jìn)程的CPU利用率

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 13:02:40
文檔

Linux如何統(tǒng)計進(jìn)程的CPU利用率

Linux如何統(tǒng)計進(jìn)程的CPU利用率:0. 為什么寫這篇博客 Linux的top或者ps都可以查看進(jìn)程的cpu利用率,那為什么還需要了解這個細(xì)節(jié)呢。編寫這篇文章呢有如下三個原因: * 希望在腳本中,能夠以過非阻塞的方式獲取進(jìn)程cpu利用率* ps無法獲得進(jìn)程當(dāng)前時刻的CPU利用率;top則需要至少1秒才
推薦度:
導(dǎo)讀Linux如何統(tǒng)計進(jìn)程的CPU利用率:0. 為什么寫這篇博客 Linux的top或者ps都可以查看進(jìn)程的cpu利用率,那為什么還需要了解這個細(xì)節(jié)呢。編寫這篇文章呢有如下三個原因: * 希望在腳本中,能夠以過非阻塞的方式獲取進(jìn)程cpu利用率* ps無法獲得進(jìn)程當(dāng)前時刻的CPU利用率;top則需要至少1秒才

0. 為什么寫這篇博客 Linux的top或者ps都可以查看進(jìn)程的cpu利用率,那為什么還需要了解這個細(xì)節(jié)呢。編寫這篇文章呢有如下三個原因: * 希望在腳本中,能夠以過”非阻塞”的方式獲取進(jìn)程cpu利用率* ps無法獲得進(jìn)程當(dāng)前時刻的CPU利用率;top則需要至少1秒才能獲

0. 為什么寫這篇博客

Linux的top或者ps都可以查看進(jìn)程的cpu利用率,那為什么還需要了解這個細(xì)節(jié)呢。編寫這篇文章呢有如下三個原因:

* 希望在腳本中,能夠以過”非阻塞”的方式獲取進(jìn)程cpu利用率
* ps無法獲得進(jìn)程當(dāng)前時刻的CPU利用率;top則需要至少1秒才能獲得進(jìn)程當(dāng)前的利用率
* * 好奇

1. 如何統(tǒng)計進(jìn)程CPU利用率

1.0 概述

在Linux的/proc文件系統(tǒng),可以看到自啟動時候開始,所有CPU消耗的時間片;對于個進(jìn)程,也可以看到進(jìn)程消耗的時間片。這是一個累計值,可以"非阻塞"的輸出。獲得一定時間間隔的兩次統(tǒng)計就可以計算出這段時間內(nèi)的進(jìn)程CPU利用率。

所以,是否存在一種簡單的,非阻塞的方式獲得進(jìn)程的CPU利用率? 答案是:“沒有”。這里給出來一個有趣的比喻:"這就像有人給你一張照片,要你回答照片中車子的速度一樣"

1.1 /proc/stat 統(tǒng)計總CPU消耗

這個概念在計算中并不重要,但是了解一下還是有益的。在/proc/[pid/]stat中我們可以看到系統(tǒng)統(tǒng)計的CPU時間消耗,這里都統(tǒng)一使用1/USER_HZ為一個時間片(man proc),多數(shù)情況下USER_HZ都是取值100,所以這里的一個時間片就是10ms。可以通過系統(tǒng)調(diào)用sysconf(_SC_CLK_TCK)來獲得準(zhǔn)確USER_HZ的取值。

例如:

# cat /proc/stat|grep "cpu "
cpu 77918485 720414 61184026 19052884316 12152363 1386 1476742 0 0

每一列對應(yīng)的CPU消耗含義是(man proc):用戶態(tài)(user)、低優(yōu)先級用戶態(tài)(nice)、系統(tǒng)(sys)、閑置、IOWAIT(內(nèi)核2.5.41+)、中斷(since 2.6.0+)、軟終端(since 2.6.0+)、steal(虛擬環(huán)境中其他OS消耗2.6.11+)、guest(為訪客OS運(yùn)行虛擬CPU消耗2.6.24)

對應(yīng)如下:

# cat /proc/stat|grep "cpu "
 |usr |nice |sys |idle |iowait |irq |softirq |steal |guest
cpu |77918485 |720414 |61184026 |19052884316 |12152363 |1386 |1476742 |0 |0

所以,計算CPU總消耗可以使用如下shell命令:

cat /proc/stat|grep "cpu "|awk '{for(i=2;i<=NF;i++)j+=$i;print "cpu_total_slice " j;}'
cpu_total_slice 19208187744

很多地方看到都只是統(tǒng)計前面四列或者五列,這是不完整的;不過,因?yàn)橥ǔG八摹⑽辶惺荂PU的主要消耗,所以這樣如此計算也通常是準(zhǔn)確的。例如,上例中,前面五列的消耗是CPU消耗的99.99%。

(tips:這里的時間片和CPU時鐘中斷的jiffy不是一個概念,一個是內(nèi)核態(tài)的,一個用戶態(tài)的)

1.2 進(jìn)程消耗的CPU時間片

在proc文件系統(tǒng)中,可以通過/proc/[pid]/stat獲得進(jìn)程消耗的時間片,輸出的第14、15、16、17列分別對應(yīng)進(jìn)程用戶態(tài)CPU消耗、內(nèi)核態(tài)的消耗、用戶態(tài)等待子進(jìn)程的消耗、內(nèi)核態(tài)等待子進(jìn)程的消耗(man proc)。所以進(jìn)程的CPU消耗可以使用如下命令:

cat /proc/9583/stat|awk '{print "cpu_process_total_slice " $14+$15+$16+$17}'
cpu_process_total_slice 1068099

tips:從這里可以看到,Linux并沒有進(jìn)程級別的iowait統(tǒng)計,如果想知道系統(tǒng)的iowait是哪個進(jìn)程導(dǎo)致,則還需要一些其他的工具輔助。

1.3 "非阻塞"的計算進(jìn)程CPU利用率

從這里也看到,是沒有某個時刻CPU利用率的說法的,也就沒法獲得某個時刻的CPU利用率。這就像物理中的"速度"的概念,沒有某一時刻速度的概念,速度一定是一個時間段之內(nèi)的。那么要"非阻塞"計算某個進(jìn)程CPU利用率,則需要取兩次事件間隔進(jìn)行計算,這兩次事件間隔的操作可以是非阻塞的。計算辦法如下:

* 時刻A,計算操作系統(tǒng)總CPU時間片消耗total_cpu_slice_A;計算進(jìn)程總CPU時間片消耗;total_process_slice_A
* 時刻B,計算操作系統(tǒng)總CPU時間片消耗total_cpu_slice_B;計算進(jìn)程總CPU時間片消耗;total_process_slice_B

B時刻就可以"非阻塞"的計算這段時間進(jìn)程的CPU利用率了:

100%*(total_process_slice_B-total_process_slice_A)/(total_cpu_slice_B-total_cpu_slice_A)

1.4 ps命令顯示的CPU利用率是什么意思

man ps
......
 CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is
 not ideal, and it does not conform to the standards that ps otherwise conforms to. CPU usage is unlikely to add up to
 exactly 100%.
......

可以看到,ps命令%CPU顯示的是進(jìn)程自啟動時刻起,直至當(dāng)前的總平均CPU利用率。

2 參考文檔

* man proc / man ps

* Accurately Calculating CPU Utilization in Linux using /proc/stat@stackoverflow

* account_process_tick@Linux Kernel

* Troubleshooting High I/O Wait in Linux

* Top and ps not showing the same cpu result

博客的草稿箱里面雖然有好幾篇稿子了,不過距離上一篇博客好像都有100天了,寫完這一篇還是很欣慰,雖然內(nèi)容不多。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Linux如何統(tǒng)計進(jìn)程的CPU利用率

Linux如何統(tǒng)計進(jìn)程的CPU利用率:0. 為什么寫這篇博客 Linux的top或者ps都可以查看進(jìn)程的cpu利用率,那為什么還需要了解這個細(xì)節(jié)呢。編寫這篇文章呢有如下三個原因: * 希望在腳本中,能夠以過非阻塞的方式獲取進(jìn)程cpu利用率* ps無法獲得進(jìn)程當(dāng)前時刻的CPU利用率;top則需要至少1秒才
推薦度:
標(biāo)簽: 如何查看 為什么 如何
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品一区欧美日韩制服 | 国产中文久久精品 | 国产第一页在线视频 | 国产精品久久久久久久久久久久 | 精品国产91久久久久 | 色婷婷综合久久久久中文一区二区 | 亚洲国产精品成人综合久久久 | 亚洲欧美日韩在线观看 | 在线观看国产日韩 | 日韩色视频| 在线中文| 亚洲精品乱码久久久久 | 欧美一区二区三区视频在线观看 | 一区二区三区视频在线观看 | 高清精品一区二区三区一区 | 国产美女视频黄a视频免费全过程 | 美国一级大黄大色毛片 | 99精品欧美一区二区三区综合在线 | 91麻豆免费视频 | 精品一区二区三区在线成人 | 色婷婷综合在线 | 日韩欧美在线第一页 | 免费一区| 欧美a一| 欧美一级爱操视频 | 久久精品视频一区二区三区 | 国产一区二区三区毛片 | 日韩精品在线视频 | 伊人伊成久久人综合网777 | 国产第一页精品 | 欧美精品国产 | 欧美日本一区二区三区 | 成a人片亚洲日本久久 | 亚洲欧美天堂 | 国产视频播放 | 国产精品久久久久久久久久免费 | 免费一区二区 | 亚洲一区二区三区成人 | 亚洲精品乱码久久久久久 | 啪啪网站免费观看 | 欧美一区二区在线 |