精品一区二区三区四区电影_亚洲人在线视频_久久久91精品_日本欧美黄色

首頁> 資訊 > > 正文

ps vs top:CPU占用率統計的兩種不同方式_環球信息

2023-05-23 21:41:46來源:博客園
如何計算 CPU 占用率?

簡單來說,進程的 CPU 占用率指的是 CPU 有多少時間花費在了運行進程上。在 Linux 系統里,進程運行的時間是以jiffies[1]統計的,通過計算jiffies * HZ,就可以得到進程消耗的 CPU 時間,再除以 CPU 的總時間,就可以得到進程的 CPU 占用率:jiffies * HZ / total_time

ps 和 top 的不同之處

pstop是最常用的兩種查看 CPU 占用的方式,都可以用來快速找到當前 CPU 占用率高的進程。但實際上這兩個工具的統計方式是完全不同的。

我們用下面這個簡單的 Go 程序來測試這兩個工具的差別:


(相關資料圖)

package mainimport ("bytes""fmt""strconv""sync""time")var testData = []byte(`testdata`)func testBuffer(idx int) {  m := map[string]*bytes.Buffer{}  for i := 0; i < 100; i += 1 {    buf, ok := m[strconv.Itoa(i)]    if !ok {      buf = new(bytes.Buffer)    }    for j := 0; j < 1024; j += 1 {      buf.Write(testData)    }    m[strconv.Itoa(i)] = buf  }  fmt.Println("done, ", idx)  wg.Done()}var wg sync.WaitGroupfunc main() {for i := 0; i < 10; i += 1 {wg.Add(1)j := igo testBuffer(j)}wg.Wait()fmt.Println("sleeping")time.Sleep(time.Hour)}

然后我們運行這個程序,通過topps aux分別查看進程的 CPU 占用情況。

top -n 1:

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND39753 infini    20   0 14.663g 0.014t   1200 S 611.1 22.2   0:23.53 test-cpu

ps aux:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDinfini   39881  767 39.1 26505284 25791892 pts/16 Sl+ 07:04   0:38 ./test-cpu

可以看到,pstop統計的 CPU 占用率是近似的(由于時間點并不完全吻合,統計值也會有輕微差別)。兩個工具的差異體現在testBuffer結束后,top統計的 CPU 占用率已經接近于 0,但是ps依然統計到很高的 CPU 占用率:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDinfini   39881 82.3 42.4 28638148 27953532 pts/16 Sl+ 07:04   0:40 ./test-cpu
為什么 ps 和 top 的統計值會有差異?

這兩個工具的差異來自于各自運行方式的不同:top 只能持續運行一段時間,而 ps 是立刻返回的。這個差異體現在運行top -n 1ps aux時,top是延遲后返回的,而ps是立刻返回的。這兩種不同的運行方式就會反映在兩個工具的統計算法上。

文章開頭我們提到,Linux 的 CPU 時間是按照jiffies統計的,考慮到效率問題,Linux 只會統計總值,不會記錄歷史數據。對于 ps來說,由于只能統計到瞬時值,這個瞬時值的統計算法就必然拿不到實時的 CPU 占用率,因為實時的占用率需要通過 (current_cpu_time - last_cpu_time) / time_duration來得到,ps只能統計一次,所以time_duration0,也就無法計算這個占用率。實際上,ps統計的是整個進程運行周期內的 CPU 占用率[2]:

(total_cpu_time / total_process_uptime)

對于測試程序這種短時間的占用率上升,剛開始的時候 ps能夠統計到近似準確的平均 CPU 占用率,但是 cpu 占用恢復后,ps的統計值并不會立刻下降,而是會隨著進程運行時間total_process_uptime的增加緩慢下降。

top命令不同, top是通過持續運行來更新 CPU 占用率統計的。-n 1這個參數指定 top運行一個迭代后退出,top命令就可以通過這個延遲來可以完成一個迭代內的 CPU 占用率統計:

(current_cpu_time - last_cpu_time) / iteration_duration
如何持續監控 CPU 占用率?

通常來說,監控系統分為采集和統計兩個不同的組件,采集組件只會采集指標數值,統計功能通過數據庫/Dashboard 來實現。要監控 CPU 占用率,ps是一個非常符合采集組件行為的統計方式,每次采集都可以拿到“當前”的 CPU 占用率。但是受限于算法本身的統計方式,我們實際采集到的是平均 CPU 占用率,無法反映進程的實時狀態。

以 INFINI Console為例,我們運行一個短時間的數據遷移任務負載,然后查看對應 INFINI 網關實例的 CPU 占用監控(payload.instance.system.cpu,通過ps方式統計當前 CPU 占用率)。可以看到,CPU 占用率會以一個曲線上升,在任務結束后會緩慢下降:

如果想持續監控實時 CPU 占用率,我們就需要借鑒top的統計方式,采集原始的進程 CPU 時間,進而通過聚合數據來計算 CPU 占用率。

在 Linux 系統下,pstop命令都會通過/proc/[PID]/stat提供的信息來計算 CPU 占用率[2]:

##  Name      Description14  utime     CPU time spent in user code, measured in jiffies15  stime     CPU time spent in kernel code, measured in jiffies16  cutime    CPU time spent in user code, including time from children17  cstime    CPU time spent in kernel code, including time from children

獲取到每個采樣時間的進程信息后,我們就可以通過這個公式來計算采樣周期內的 CPU 占用率:

delta(cpu_time) / delta(timestamp)

在 INFINI Console,我們可以通過deriative函數來計算payload.instance.system.user_in_mspayload.instance.system.sys_in_ms相對于timestamp的占比,進而得到準確的 CPU 占用率統計。

這樣,我們就可以統計到網關在運行任務負載前后的實時 CPU 占用率:

總結

雖然topps都可以統計 CPU 占用率,但統計算法卻完全不同。了解這兩種算法的底層原理之后,我們就可以設計出適合監控系統的數據采集和數據統計方式,采集到準確的 CPU 占用率。

參考JiffiesTop and ps not showing the same cpu result

標簽:

上一篇:軍車牌照xl是哪個單位的_xl的車牌是什么軍區的
下一篇:最后一頁
精品一区二区三区四区电影_亚洲人在线视频_久久久91精品_日本欧美黄色

            99视频在线视频| 911福利视频| 伊人网在线综合| 成人免费在线小视频| 视色,视色影院,视色影库,视色网| 污视频免费在线观看网站| 人妻无码视频一区二区三区| 中文字幕无码精品亚洲35| av在线播放亚洲| 夜夜添无码一区二区三区| 男人天堂网站在线| 青青草综合视频| 黄黄视频在线观看| 日韩中文字幕亚洲精品欧美| 国产人妻互换一区二区| 干日本少妇视频| 手机看片日韩国产| 久久久久久久香蕉| 一本久道高清无码视频| 欧美a在线视频| 九九热免费精品视频| gogogo高清免费观看在线视频| 男女污污的视频| 中文字幕丰满乱码| 欧美一级黄色录像片| 亚洲激情免费视频| 国产精品国产亚洲精品看不卡| 黄色一级片播放| 嫩草av久久伊人妇女超级a| 天天干天天操天天玩| 久久出品必属精品| 久久久久久av无码免费网站下载| aa视频在线播放| 99久久国产宗和精品1上映| 男生操女生视频在线观看| 偷拍盗摄高潮叫床对白清晰| 真实国产乱子伦对白视频| 亚洲 欧美 日韩 国产综合 在线 | 亚洲精品国产久| 国产又粗又猛又爽又黄的网站| 欧美视频在线观看网站 | 国产原创精品在线| 一级日本黄色片| 免费一级特黄毛片| 亚洲色图久久久| 国产探花在线观看视频| 国产成人在线小视频| 老熟妇仑乱视频一区二区 | 欧美韩国日本在线| 69久久久久久| 毛片av在线播放| 欧美日韩亚洲一二三| 老司机av福利| 国产最新免费视频| 日本在线一二三区| 日本中文字幕在线视频观看| 中文字幕欧美人妻精品一区| 黄色一级片网址| 黄色片久久久久| 中国 免费 av| 亚洲 欧美 日韩系列| 少妇久久久久久被弄到高潮| 亚洲成人福利在线观看| 大地资源网在线观看免费官网| 国产乱子夫妻xx黑人xyx真爽| 欧美wwwwwww| 国产一区二区在线视频播放| 超碰在线免费av| 黄色一级大片在线观看| 99久热在线精品视频| 亚洲欧美自拍另类日韩| www在线观看免费| 麻豆md0077饥渴少妇| 欧美一级裸体视频| 国产精品裸体瑜伽视频| 男女啪啪的视频| 亚洲精品www.| 日韩中文字幕免费在线| www.成年人视频| 国产高清免费在线| 天天插天天操天天射| 欧美日本视频在线观看| 老司机午夜网站| 91 在线视频观看| 99久久久无码国产精品6| 免费的一级黄色片| 五月天男人天堂| 亚洲成人天堂网| av观看免费在线| 国产黄色片免费在线观看| a级网站在线观看| 亚洲天堂av一区二区三区| mm1313亚洲国产精品无码试看| 99久久国产综合精品五月天喷水| 91香蕉视频网址| 久久精品亚洲天堂| wwwwwxxxx日本| 亚州精品一二三区| 国产福利一区视频| 国产精品丝袜久久久久久消防器材| 国产精品自拍合集| 麻豆视频传媒入口| 中文字幕超清在线免费观看| 三级一区二区三区| 色天使在线观看| 中文字幕亚洲乱码| 亚洲国产高清av| 日韩精品免费播放| 国产精品少妇在线视频| 各处沟厕大尺度偷拍女厕嘘嘘| 久久久久久免费看| 成 年 人 黄 色 大 片大 全| 国产传媒久久久| 蜜臀精品一区二区| 人妻夜夜添夜夜无码av| 日本福利视频一区| 毛片在线播放视频| 免费看日本毛片| 黄色一级在线视频| 午夜肉伦伦影院| 国产一级片黄色| 中文字幕av专区| 色网站在线视频| 国产日韩视频在线播放| 青青草免费在线视频观看| 91精品国产吴梦梦| 免费看毛片的网址| 久久美女福利视频| 福利在线一区二区三区| 亚洲综合欧美在线| 三年中国中文在线观看免费播放| 国产a级片免费看| 99热这里只有精品免费| 国产日韩欧美精品在线观看| 欧美黑人经典片免费观看| 日韩在线一级片| 黄色国产小视频| 爽爽爽在线观看| 久久天天东北熟女毛茸茸| 免费看毛片的网址| 不卡影院一区二区| 日本高清久久久| 操bbb操bbb| 亚洲精品无码国产| 国产第一页视频| 欧美成人手机在线视频| 成人小视频在线观看免费| 欧美牲交a欧美牲交| 欧美三级午夜理伦三级富婆| 亚洲综合在线一区二区| www精品久久| 无码内射中文字幕岛国片| 制服丝袜中文字幕第一页| 国产又粗又硬又长| 精品99在线视频| www.国产福利| 国产免费黄色小视频| 在线观看免费成人av| 日本丰满大乳奶| 乱子伦视频在线看| 天天综合中文字幕| 日日碰狠狠添天天爽超碰97| 天天操,天天操| www.日本在线视频| 国产一级特黄a大片免费| 午夜久久久久久久久久久| 亚洲中文字幕无码不卡电影| 男女视频在线观看网站| 激情综合在线观看| 91社在线播放| 日韩中文字幕组| 国产欧美123| 182午夜在线观看| xxxx18hd亚洲hd捆绑| 激情五月婷婷基地| 日韩免费视频播放| 日本免费在线视频观看| 久久久久久久久久久久久久国产| 日本特黄在线观看| av五月天在线| 国产一区二区片| 日本中文字幕二区| 国产亚洲精品网站| 日韩不卡视频一区二区| 久久久久久三级| 免费超爽大片黄| 三级黄色片播放| 丰满少妇在线观看| 波多野结衣家庭教师在线播放| 艳母动漫在线观看| 依人在线免费视频| 北条麻妃在线视频| av7777777| 免费网站永久免费观看| 午夜激情视频网| 国产嫩草在线观看| 久久美女福利视频| 欧美在线一区视频| 中文字幕日韩精品无码内射| 在线观看中文av|