1. 程式人生 > >Linux 效能監控 —— 磁碟 I/O

Linux 效能監控 —— 磁碟 I/O

零. 前言 如果從磁碟(disk)中讀取/寫入資料, CPU 就會處於空閒狀態, 大大浪費了這段等待時間 CPU 的計算能力。 所以SSD、 快取、 記憶體、 暫存器之類的設計就是為了減少 CPU 的等待時間, 釋放計算能力。 可以看出業界對磁碟 I/O 的重視, 以及磁碟 I/O 對系統的影響之大。 一.  如何檢視磁碟 I/O

在 Linux 平臺或者 BSD 平臺下, 藉助 top 命令可以清楚看到磁碟 I/O 情況。 


二. 如何衡量磁碟 I/O 存在瓶頸 磁碟 I/O 是否存在瓶頸取決於當前機器 CPU 的總核數(總核數計算移步我的另一篇博文: Linux 效能監控 ---- Load Average
)。 公式: 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 的資料。