Linux 效能監控 —— 磁碟 I/O
阿新 • • 發佈:2019-02-03
零. 前言
如果從磁碟(disk)中讀取/寫入資料, CPU 就會處於空閒狀態, 大大浪費了這段等待時間 CPU 的計算能力。 所以SSD、 快取、 記憶體、 暫存器之類的設計就是為了減少 CPU 的等待時間, 釋放計算能力。 可以看出業界對磁碟 I/O 的重視, 以及磁碟 I/O 對系統的影響之大。
一. 如何檢視磁碟 I/O
)。 公式: X(IO) = 1/(cpu 總核數) 用來衡量磁碟
I/O 情況, 以上圖的機器為例子, 這臺機器 2 CPU 12 核 也就是總核心數為 2*12 = 24, X(IO) = 0.04166666 = 4.17%。
如果上圖指標長時間大於 4.17%, 那麼我們的網站響應可能就會變慢了。
三. 影響 I/O 效能有哪幾點
衡量 I/O 效能一個術語叫 IOPS(input/output per-second) 每秒輸入或輸出量
影響 IOPS 因素有如下 4 點:
- 多重磁碟陣列(Multidisk Arrays): 陣列裡越多磁碟 IOPS 越高。 如果一個 disk 有 250 IOPS, 則 2 個 disk 有 500 IOPS
- 每個磁碟的平均 IOPS (Average IOPS per-drive): 磁碟速度越高, 當然 IOPS 越高
- RAID(具體參見 https://en.wikipedia.org/wiki/RAID) 因素: 使用 RAID 技術儲存。 RAID 在寫操作時有大量效能耗費。 對於 RAID6, 每次寫需要 6 次磁碟操作。 RAID1 和 RAID10 每次寫需要
2 次磁碟操作。
- 讀寫工作量(Read and Write Workload): 比如在 RAID 5 或者 RAID 6 有大量寫操作, IOPS 將會很低
四. 如何解決 I/O 瓶頸問題
我們可以對磁碟進行調優, 這很複雜而且也不會超過 RAM 的速度。
所以, 可以先對 I/O 高的服務或應用進行處理, 最快的方法就是資料快取到 RAM。 例如資料庫伺服器的記憶體配置到最高, 儘量快取 SQL 的資料。
在 Linux 平臺或者 BSD 平臺下, 藉助 top 命令可以清楚看到磁碟 I/O 情況。