一、前言
在博客 基於Docker搭建node-exporter+Prometheus+Grafana服務器監控平臺 已經搭建好服務器監控平臺。
在 Linux服務器監控,你必須要知道的“指標”和“命令”! 中歸納出服務器性能監控中需要重點關注的幾大模塊。而cpu作爲重點關注的模塊,需要注意下面這些和cpu相關的指標數據。
在實際的性能測試過程中,cpu的性能問題大部分都體現在us(user)、wa(iowait)、sy(system)、si(softirq)
這幾個數據中。並且通過Grafana展示數據中,我們可以看到,關於cpu的數據也只是展示了total、user、system、iowait這幾個數據。下面就是通過常見的幾個數據的分析過程。
二、鏈路分析
當我們在性能測試過程中,發現是操作系統層面的瓶頸時,首先需要看的就是CPU相關數據。通過top
、mpstat
命令查看us
、wa
、sy
、si
的數據是否正常,當然也可以用前面說到的Grafana平臺,當然這個平臺最後的本質也是使用的相關命令。
一般來說us>70%就高了,sy>30%就高了,wa>5%就高了
,可以通過這個標準來看是那部分cpu使用率過高。關於si
的數據,是最好爲0,雖然Grafana中沒有展示si的數據,但是可以通過total-us-sy-wa
來判斷是不是其他部分cpu使用率過高。一般來說total-us-sy-wa
的值接近於0。
2.1 us
us爲
CPU運行(未調整優先級的)用戶進程時間佔比
,典型的用戶進程有:Shells、數據庫、Web服務器…
CPU使用率中us的使用率過高時的分析流程如下:
2.2 wa
wa(iowait)爲CPU用於
等待IO完成的CPU時間佔比
,一般IO操作
特別頻繁時,這個值就會高。
CPU使用率中wa的使用率過高時的分析流程如下:
2.3 sy
sy(system)爲
CPU運行內核進程時間佔比
,分配內存、IO操作、創建子進程都是內核操作.
CPU使用率中sy的使用率過高時的分析流程如下:
2.4 si
si(softirq)爲
CPU處理軟件中斷時間佔比
。軟件中斷的含義爲:CPU 正在運行時,突然來了一個優先級高
的,這時就會發一個中斷信號
給 CPU。作爲一個幹活的,CPU就把手頭的工作現場保存一下,幹這個優先級高的活。除非這個中斷是致命的,不然 CPU 會在幹完這個活之後再回去幹之前的活,這就是一次軟件中斷。
CPU使用率中si的使用率過高時的分析流程如下:
三、寫在最後
參考鏈接:cpu熱點分析
最後,CPU的數據分析可以總結爲下面這張圖。