天天看點

性能測試之cpu的性能診斷一,CPU基本知識二,CPU運作狀态三,Linux的觸發手段四,CPU名額檢視相關指令五,CPU重要名額5.2 隊列5.3 中斷 5.4 上下文切換六、性能分析 

一,CPU基本知識

       測試中CPU診斷是重要的性能名額, CPU是代碼打交道最多的硬體之一,要想一個CPU工作就需要提供一些指令和資料,一般放在記憶體中,其中指令一般都是由代碼編譯而來,資料也是代碼中需用到的,如int、char,程式需要執行的部分先裝載進記憶體,系統會給程式配置設定cpu時間,cpu從記憶體中取出相應指令進行解碼執行,以此類推直到程式退出

二,CPU運作狀态

性能測試之cpu的性能診斷一,CPU基本知識二,CPU運作狀态三,Linux的觸發手段四,CPU名額檢視相關指令五,CPU重要名額5.2 隊列5.3 中斷 5.4 上下文切換六、性能分析 

三,Linux的觸發手段

從使用者空間到核心空間有兩種觸發手段:

1.系統調用: 使用者空間的應用程式,通過系統調用,進入核心空間。這個時候使用者空間的程序要傳遞很多變量、參數的值給核心,核心态運作的時候也要儲存使用者程序的一些寄存器值、變量等。所謂的“程序上下文”,可以看作是使用者程序傳遞給核心的這些參數以及核心要儲存的那一整套的變量和寄存器值和當時的環境等。

2.中斷:   硬體通過觸發信号,導緻核心調用中斷處理程式,進入核心空間。例如網卡發送一個資料包或硬碟驅動器提供一次 IO 請求等。這個過程中,硬體的一些變量和參數也要傳遞給核心,核心通過這些參數進行中斷處理。所謂的“中斷上下文”,其實也可以看作就是硬體傳遞過來的這些參數和核心需要儲存的一些其他環境(主要是目前被打斷執行的程序環境)。 

四,CPU名額檢視相關指令

Linux中CPU資訊儲藏在/proc/cpuinfo (cat /proc/cpuinfo)

檢視cpu核數的指令:

方法一:1,實體CPU數統計 :cat /proc/cpuinfo/ | grep ’‘physical id’‘ | sort| uniq |wc -l

               2,核心數CPU數統計 :cat /proc/cpuinfo/ | grep ’‘core id’‘ | sort| uniq |wc -l

               3,總邏輯CPU數統計 :cat /proc/cpuinfo/ | grep ’‘processor’‘ | sort| uniq |wc -l 

方法二:top指令

方法三:lscpu

五,CPU重要名額

1,占用率

2,CPU隊列

3,中斷

4,上下文切換

5.1 占用率

使用率的标準:50 70 90 (50 %以下不用關注 70%要告警 90%cpu需要優化)

 單核:

1、CPU使用率70%

2、CPU空閑率:1-70%=30%

四核:

1、總CPU400%:400*70%=280%

2、總空閑率:400%-280%=120%

性能監控中,測試需要關注至少要100%的空閑時間 計算觸發告警的數值: 以4核為例:400% - 100% = 300%,     則告警使用率:300/400 = 75%

5.2 隊列

當CPU過載的時候,超過負載的時候,就會排程期跟不上系統要求,隊列就會排隊,那需要在Linux中檢視隊列資訊來幫助分析

如何判斷系統隊列情況:

系統負載<=CPU總核數,表示系統不忙

CPU總核數<=系統負載<=CPU總核數*3,不确定,需要結合其他資源來分析

系統負載>=CPU總核數*3,表示系統忙(系統隊列會很多) 系統負載是通過運作狀态+阻塞狀态的程序計算出來的

top指令檢視系統負載

性能測試之cpu的性能診斷一,CPU基本知識二,CPU運作狀态三,Linux的觸發手段四,CPU名額檢視相關指令五,CPU重要名額5.2 隊列5.3 中斷 5.4 上下文切換六、性能分析 

5.3 中斷

當滑鼠進行點選,磁盤裝置完成讀寫,都會通過中斷通知CPU外部完成了,其中分為硬中斷和軟中斷兩種;

硬中斷:可直接中斷CPU(中斷數是記錄在/proc/interrupts)                   軟中斷:主要處理網絡包

cpu資訊中有hi和si,cpu花了大量時間處理硬中斷則hi較高, 如果處理網絡包多則si占比較高

id :cpu的空閑率,如果過小說明cpu有瓶頸

如何找中斷源:

性能測試之cpu的性能診斷一,CPU基本知識二,CPU運作狀态三,Linux的觸發手段四,CPU名額檢視相關指令五,CPU重要名額5.2 隊列5.3 中斷 5.4 上下文切換六、性能分析 

中斷源分析:

性能測試之cpu的性能診斷一,CPU基本知識二,CPU運作狀态三,Linux的觸發手段四,CPU名額檢視相關指令五,CPU重要名額5.2 隊列5.3 中斷 5.4 上下文切換六、性能分析 

si :常見的軟體中斷一般都是和網絡有關。從網卡到IP層的資料封包收發都是si處理的,長時間寫日志也可能産生軟體中斷。            

hi:使用率過高時,表示目前硬體中斷占用很大的百分比。一般硬體中斷我們可以分析檔案/proc/interrupts、/proc/irq/pid/smp_affinity、服務irqbalance是否配置,以及CPU的頻率設定,通過這些可以幫系統打散優化系統的硬體中斷。

 5.4 上下文切換

1,上下文:儲存CPU正在執行的指令位置,下一條指令位置

2,上下文切換:儲存上一個任務的上下文到核心,加載新任務的上下文,運作新任務,新任務運作完了之後呢,再次排程上一個任務,這樣任務就是看起來持續進行

Linux中檢視上下文指令:

vmstat指令 : cs資料表示上下文,in表示中斷

性能測試之cpu的性能診斷一,CPU基本知識二,CPU運作狀态三,Linux的觸發手段四,CPU名額檢視相關指令五,CPU重要名額5.2 隊列5.3 中斷 5.4 上下文切換六、性能分析 

六、性能分析 

發現在CPU有問題後下一步該怎麼分析?

1,用top找到最耗CPU PID (通過找到大量消耗程序的PID,找到下面的線程TID)

2,用top-Hp PID 找到最耗CPU TID

3,PID十進制轉換為十六進制

4,(Java中用于分析程序的)jstack 程序 |  grep -A10 -B10 線程     通過jd-gui 反編譯工具,檢視class檔案,直接拖入class檔案就可以了

性能測試之cpu的性能診斷一,CPU基本知識二,CPU運作狀态三,Linux的觸發手段四,CPU名額檢視相關指令五,CPU重要名額5.2 隊列5.3 中斷 5.4 上下文切換六、性能分析 

繼續閱讀