萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 磁碟效能測試:`dd` 指令四種同步模式深度解析與實測基準

核心觀念

`dd` 本質為區塊複製工具,測試磁碟效能關鍵在於**寫入快取處理方式**。四種常見參數組合對應四種同步語意,結果差異極大 (最高可達 10 倍)。

dd 指令測試示意

四種指令與實測對比 (測試資料量 256MB = 64k × 4k)

指令同步機制實測速度解讀
`dd bs=64k count=4k if=/dev/zero of=test`**無同步**,僅寫入頁面快取 (Write Cache)~198 MB/s**虛假高速**:實際未寫入磁碟,僅進記憶體,無參考價值
`dd bs=64k count=4k if=/dev/zero of=test; sync`指令結束後**獨立執行 sync**~513 MB/s**同樣虛假**:`sync` 執行時 `dd` 已回報速度,未計入真實寫入時間
`dd bs=64k count=4k if=/dev/zero of=test conv=fdatasync`指令結束前**執行一次 fdatasync** (資料同步)~95.7 MB/s**真實寫入速度**:含資料進快取 + 強制落盤,最接近實際應用
`dd bs=64k count=4k if=/dev/zero of=test oflag=dsync`**每個區塊 (64k) 皆同步寫入** (Direct I/O)~78.9 MB/s**最嚴格/最慢**:模擬資料庫同步寫入 (WAL)、關鍵任務負載,繞過快取

嚴格基準測試:1GB 資料量 (dsync 模式)

dd if=/dev/zero of=test bs=64k count=16k oflag=dsync

實測:**56.8 MB/s** (1.1 GB / 18.9s)。

VPS/雲端硬碟效能分級參考 (dsync 模式)

  • < 10 MB/s:極差,資料庫/高併發服務嚴重拖慢。
  • 10-50 MB/s:可接受,一般網站/應用無明顯瓶頸。
  • > 50 MB/s:優秀,高效能資料庫/大數據處理無壓力。
  • > 100 MB/s:頂級 (通常為本地 NVMe SSD 或高階企業級存儲)。

參數含義速查

  • `bs=64k`:區塊大小 64 KB (65,536 bytes)。
  • `count=4k`:複製 4,096 個區塊 (總計 256 MB)。
  • `if=/dev/zero`:輸入來源為零字元裝置 (產生全 0 資料流)。
  • `of=test`:輸出目標檔案 `test` (當前目錄)。
  • `conv=fdatasync`:轉換選項,完成前執行 `fdatasync` (僅同步資料,不含中繼資料)。
  • `oflag=dsync`:輸出旗標,啟用 `O_DSYNC` 開啟模式,每次 `write()` 等待實體寫入完成。

最佳實務建議

  1. **基準測試用 `conv=fdatasync`** (單次同步),平衡真實度與速度。
  2. **資料庫/關鍵負載模擬用 `oflag=dsync`** (每區塊同步),最嚴苛。
  3. **勿用無同步/分號 sync 版本** 作為效能依據,極度誤導。
  4. 測試前 `echo 3 | sudo tee /proc/sys/vm/drop_caches` 清理頁面快取,減少干擾。
  5. 多次執行取中位數,排除系統背景活動干擾。
copyright © 萬盛學電腦網 all rights reserved