Linux性能優化(十)——CPU性能分析工具

一、CPU性能指標

1、CPU使用率

CPU使用率是最常見的一個性能指標,描述了非空閒時間佔總CPU 時間的百分比,根據CPU上運行任務的不同,分爲用戶CPU、系統CPU、等待IO CPU、軟中斷和硬中斷等。
用戶CPU使用率包括用戶態CPU使用率(user)和低優先級用戶態CPU使用率(nice),表示CPU在用戶態運行的時間百分比。用戶CPU使用率高,通常說明有應用程序比較繁忙。
系統CPU使用率,表示CPU在內核態運行的時間百分比(不包括中斷)。系統CPU使用率高,說明內核比較繁忙。
等待IO的CPU使用率,即iowait,表示等待IO的時間百分比。iowait 高,通常說明系統與硬件設備的IO交互時間比較長。
軟中斷和硬中斷的CPU使用率,分別表示內核調用軟中斷處理程序、硬中斷處理程序的時間百分比。中斷CPU使用率高,通常說明系統發生大量的中斷。
竊取CPU使用率(steal)和客戶CPU使用率(guest),分別表示被其它虛擬機佔用的CPU時間百分比,和運行客戶虛擬機的CPU 時間百分比。




2、CPU平均負載

CPU平均負載是系統的平均活躍進程數,反應了系統的整體負載情況,主要包括三個數值,分別指過去1分鐘、過去5分鐘和過去15分鐘的平均負載。理想情況下,平均負載等於邏輯CPU個數,表示每個CPU都恰好被充分利用。如果平均負載大於邏輯CPU個數,表示負載比較重。

3、進程上下文切換

進程上下文切換包括無法獲取資源而導致的自願上下文切換和被系統強制調度導致的非自願上下文切換。上下文切換是保證Linux正常運行的一項核心功能,但過多上下文切換會將原本運行進程的CPU時間,消耗在寄存器、內核棧以及虛擬內存等數據的保存和恢復上,縮短進程真正運行的時間,成爲性能瓶頸。

4、CPU緩存命中率

由於CPU發展的速度遠快於內存的發展,CPU的處理速度就比內存的訪問速度快得多。CPU在訪問內存時,需要要等待內存的響應。
Linux性能優化(十)——CPU性能分析工具
CPU緩存的速度介於CPU和內存之間,緩存的是熱點的內存數據。根據不斷增長的熱點數據,CPU緩存按照大小不同分爲L1、L2、L3 等三級緩存,其中L1和L2常用在單核中, L3則用在多核中。從L1到L3,三級緩存的大小依次增大,性能依次降低。CPU緩存命中率用於衡量CPU緩存的複用情況,命中率越高,則表示性能越好。

二、CPU性能分析工具

CPU性能指標查看可以使用工具:
Linux性能優化(十)——CPU性能分析工具
性能分析工具可以查看的CPU性能指標:
Linux性能優化(十)——CPU性能分析工具
CPU性能指標比較多,很多CPU性能指標間都有一定的關聯。用戶 CPU使用率高,應該排查進程的用戶態而不是內核態。因爲用戶 CPU使用率反映用戶態的CPU使用情況,而內核態的CPU使用情況只會反映到系統CPU使用率上。
Linux性能優化(十)——CPU性能分析工具
top輸出可以查看各種CPU使用率以及殭屍進程和平均負載等信息。vmstat輸出可以查看上下文切換次數、中斷次數、運行狀態和不可中斷狀態的進程數。
pidstat輸出可以查看進程的用戶CPU使用率、系統CPU使用率、以及自願上下文切換和非自願上下文切換情況。
pidstat輸出結果中的進程用戶CPU使用率升高,會導致top輸出的用戶CPU使用率升高。當發現top輸出的用戶CPU使用率有問題時,可以跟pidstat的輸出做對比,觀察是否是某個進程導致的問題。而找出導致性能問題的進程後,使用進程分析工具來分析進程的行爲,比如使用strace分析系統調用情況,使用perf分析調用鏈中各級函數的執行情況。
top輸出結果中平均負載升高,可以跟vmstat輸出的運行狀態和不可中斷狀態的進程數做對比,觀察是哪種進程導致的負載升高。如果不可中斷進程數增多,那麼就需要做IO分析,使用dstat或sar等工具,進一步分析IO情況。如果運行狀態進程數增多,使用top和 pidstat,找出處於運行狀態的到底是什麼進程,然後再用進程分析工具,做進一步分析。
當發現top輸出結構中軟中斷CPU使用率升高時,可以查看 /proc/softirqs文件中各種類型軟中斷的變化情況,確定到底是哪種軟中斷出的問題。如果是網絡接收中斷導致的問題,使用網絡分析工具sar和tcpdump來分析。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章