久久精品国产99_国产丝袜一区二区三区免费视频_国产精品成人一区二区艾草_日韩午夜中文字幕_久久精品免费在线观看_狠狠色综合日日_国产精品va在线播放我和闺蜜_亚洲精品wwwww_欧美人与性动交a欧美精品_在线亚洲欧美专区二区

首頁> 資訊 > > 正文

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的車牌是什么軍區的
下一篇:最后一頁
久久精品国产99_国产丝袜一区二区三区免费视频_国产精品成人一区二区艾草_日韩午夜中文字幕_久久精品免费在线观看_狠狠色综合日日_国产精品va在线播放我和闺蜜_亚洲精品wwwww_欧美人与性动交a欧美精品_在线亚洲欧美专区二区
精品婷婷伊人一区三区三| 日韩理论片一区二区| 欧美精品乱码久久久久久| 国产精品免费观看视频| 成人性生交大片| 国产三区在线成人av| 国产一区二区三区免费观看| 久久久综合九色合综国产精品| 黑人巨大精品欧美一区| 国产精品污污网站在线观看| av在线不卡免费看| 夜夜精品浪潮av一区二区三区| 在线观看一区日韩| 六月丁香综合在线视频| 国产无人区一区二区三区| 国产精品影音先锋| 亚洲天堂久久久久久久| 在线观看91av| 91首页免费视频| 久久精品国产精品青草| 亚洲欧美乱综合| 久久久亚洲高清| 欧美性生活一区| 成人性视频免费网站| 一区二区三区四区中文字幕| 久久亚洲综合色| 欧美一级免费大片| 欧美在线一区二区| voyeur盗摄精品| 国产一区福利在线| 蜜臀久久99精品久久久久久9| 一区二区在线观看av| 亚洲日本在线天堂| 亚洲同性同志一二三专区| 国产喷白浆一区二区三区| 日韩精品一区在线| 日韩视频免费观看高清在线视频| 欧美日免费三级在线| a美女胸又www黄视频久久| www.亚洲免费av| 一本色道亚洲精品aⅴ| 色国产综合视频| 69av一区二区三区| 久久综合视频网| 国产精品久久久久影院亚瑟| 久久久久久久久久久电影| 欧美精品三级日韩久久| 精品国产免费视频| 亚洲色图另类专区| 欧美aaa在线| 日本精品视频一区二区三区| 一本色道久久综合狠狠躁的推荐| 99久久久久久| 久久色在线观看| 亚洲一二三四区不卡| 狠狠色狠狠色合久久伊人| 一本一道久久a久久精品| 日韩午夜在线播放| 亚洲激情综合网| 国产精品亚洲人在线观看| 欧美电影在线免费观看| 国产精品美女久久久久久久网站| 男女视频一区二区| 色综合久久中文综合久久97| 日韩一区二区三免费高清| 亚洲一区二区三区自拍| 成人国产在线观看| 国产视频亚洲色图| 韩国av一区二区三区在线观看| 在线91免费看| 精品一区免费av| 91精品国产麻豆国产自产在线| 亚洲综合久久av| 欧美精品一二三| 五月婷婷综合在线| 欧美丰满美乳xxx高潮www| 日韩国产高清影视| xvideos.蜜桃一区二区| 国产一区二区三区综合| 久久精品亚洲精品国产欧美| 国产精品一品二品| 亚洲欧洲综合另类| 欧美性色黄大片| 日本欧美韩国一区三区| 精品国产91乱码一区二区三区| 国内精品视频一区二区三区八戒| 国产视频视频一区| 欧美天天综合网| 久久aⅴ国产欧美74aaa| 国产亚洲女人久久久久毛片| 色综合网站在线| 久久精品国内一区二区三区| 国产蜜臀av在线一区二区三区| 91色porny蝌蚪| 精品写真视频在线观看 | 婷婷国产在线综合| 国产mv日韩mv欧美| 国产精品久久久久久久岛一牛影视| 99r国产精品| 国产一区二区主播在线| 午夜av一区二区| 亚洲影视在线观看| 欧美经典一区二区| 欧美一级淫片007| 一本大道久久a久久综合| 粉嫩蜜臀av国产精品网站| 久久精品久久久精品美女| 亚洲成av人片| 日韩不卡一区二区| 免费成人在线视频观看| 日本欧美一区二区在线观看| 日韩精品欧美精品| 一区二区三区日韩欧美| 一区二区三区在线免费播放| 亚洲伦理在线免费看| 亚洲女厕所小便bbb| 亚洲一区二区在线观看视频 | 久久婷婷综合激情| 久久久国产午夜精品| 中文字幕欧美国产| 亚洲美女区一区| 免费观看久久久4p| 国产精品一区免费在线观看| 国产麻豆精品一区二区| 成人国产电影网| 欧美丝袜丝nylons| 精品国产成人在线影院| 亚洲免费三区一区二区| 视频一区欧美日韩| 91在线码无精品| 久久综合色一综合色88| 亚洲色欲色欲www在线观看| 图片区小说区国产精品视频| 国产成人av一区二区三区在线| 99精品偷自拍| 久久久久88色偷偷免费| 亚洲va在线va天堂| 成人中文字幕在线| 精品国产免费人成在线观看| 亚洲人成网站精品片在线观看| 日本三级韩国三级欧美三级| 91蜜桃网址入口| 国产精品久久久久毛片软件| 奇米一区二区三区av| 欧美日韩高清一区| 久久久久久久久一| 国产精品一二一区| 久久精品亚洲精品国产欧美 | 亚洲综合色噜噜狠狠| 处破女av一区二区| 6080亚洲精品一区二区| 国产精品免费丝袜| 国产精一品亚洲二区在线视频| 精品粉嫩超白一线天av| 青草av.久久免费一区| 日韩免费观看高清完整版 | 亚洲欧美日韩人成在线播放| 91一区二区三区在线观看| 亚洲女同ⅹxx女同tv| 5566中文字幕一区二区电影 | 中文字幕五月欧美| 91精品视频网| 成人激情校园春色| 亚洲第一激情av| 久久日一线二线三线suv| 91免费看`日韩一区二区| 石原莉奈在线亚洲三区| 国产欧美一区二区三区在线看蜜臀| 不卡一区中文字幕| 青草av.久久免费一区| 亚洲欧美激情插| 久久久99精品免费观看不卡| 91在线精品一区二区| 麻豆久久久久久| 亚洲欧美视频一区| 久久久av毛片精品| 正在播放一区二区| 欧美在线看片a免费观看| 不卡的电影网站| 国产成人午夜高潮毛片| 麻豆专区一区二区三区四区五区| 一区二区三区四区在线免费观看| 国产欧美一区二区三区网站| 欧美videos大乳护士334| 91精品久久久久久蜜臀| 欧美一卡二卡在线| 欧美不卡一区二区三区| 欧美一区二区三区免费| 精品久久免费看| 国产亚洲欧美色| 欧美激情资源网| 亚洲靠逼com| 日韩精品五月天| 激情综合色播激情啊| 国产成人aaa| 欧美性一区二区| 久久久国产精华| 午夜成人免费视频| 不卡视频在线看| 日韩免费在线观看|