性能指標 性能優化核心指標:吞吐和延遲 Linux Performance Tools: 平均負載 System load averages is the average number of processes that are either in a runnable or uninterrupt ...
性能指標
性能優化核心指標:吞吐和延遲
Linux Performance Tools:
平均負載
➜ ~ uptime
11:32 up 5 days, 19:45, 2 users, load averages: 2.01 1.86 2.04
11:32 //當前時間
up 5 days, 19:45 //系統運行時間
2 users //正在登錄用戶數
load averages: 2.01 1.86 2.04 //過去 1 分鐘、5 分鐘、15 分鐘的平均負載
System load averages is the average number of processes that are either in a runnable or uninterruptable state.
- 可運行狀態的進程,是指正在使用 CPU 或者正在等待 CPU 的進程,也就是我們常用 ps 命令看到的,處於 R 狀態(Running 或 Runnable)的進程。
- 不可中斷狀態的進程則是正處於內核態關鍵流程中的進程,並且這些流程是不可打斷的,比如最常見的是等待硬體設備的 I/O 響應,也就是我們在 ps 命令中看到的 D 狀態(Uninterruptible Sleep,也稱為 Disk Sleep)的進程。
- 不可中斷狀態實際上是系統對進程和硬體設備的一種保護機制。
//查看linux系統的核數
[root@k8s ~]# grep 'model name' /proc/cpuinfo | wc -l
統計文件行數 wc -l
根據核數我們可以判斷平均負載的情況,平均負載是指單位時間內,處於可運行狀態和不可中斷狀態的進程數。所以,它不僅包括了正在使用 CPU 的進程,還包括等待 CPU 和等待 I/O 的進程。
CPU 使用率,是單位時間內 CPU 繁忙情況的統計,跟平均負載並不一定完全對應。比如:
- CPU 密集型進程,使用大量 CPU 會導致平均負載升高,此時這兩者是一致的;
- I/O 密集型進程,等待 I/O 也會導致平均負載升高,但 CPU 使用率不一定很高;
- 大量等待 CPU 的進程調度也會導致平均負載升高,此時的 CPU 使用率也會比較高。
壓測工具
stress 是一個 Linux 系統壓力測試工具,常用來異常進程模擬平均負載升高的場景。
sysstat 包含了常用的 Linux 性能工具,用來監控和分析系統的性能。我們的案例會用到這個包的兩個命令 mpstat 和 pidstat。
- mpstat 是一個常用的多核 CPU 性能分析工具,用來實時查看每個 CPU 的性能指標,以及所有 CPU 的平均指標。
- pidstat 是一個常用的進程性能分析工具,用來實時查看進程的 CPU、記憶體、I/O 以及上下文切換等性能指標。
//通過調用 sqrt 函數計算由 rand 函數產生的隨機數的平方根
stress -c 4
//調用 sync 函數將記憶體上的內容寫到硬碟上,消耗IO資源
stress -i 4
// 監測全部CPU,每5s輸出一次數據
mpstat -P ALL 5
// 5s為採樣周期,輸出進程信息
pidstat 5