用DD工具來評估Oracle Database磁碟寫入效能

最近小邊遇到了一個案例,有位客戶要測試Oracle Database系統的磁碟陣列機(Storage)寫入效能,用了DD這個工具去做寫入壓力測試,測試過程雖有得到DD產出的數值,但卻發現在磁碟陣列機的系統管理畫面(storage dashboard)所觀測到的寫入流量時間與測試結束時間對應不起來,這是什麼神奇的事情? 測試指令以產出測試結果了,但磁碟陣列機卻還有I/O在寫入?

請對方提供了測試的DD指令後才發現,原來沒使用sync參數,所以系統用了暫存機制了,且Oracle資料庫系統預設使採用8K的block size,測試過程卻採用4K來測試,所以這樣的測試當然是不準的瞜。
將指令變更為如下:
time sh -c “dd if=/dev/zero of=testfile bs=8k count=2500000 && sync

※從測試結果的時間可以觀測到以8K的block size,寫入10GB的資料大約花費了25.416秒。

如果不使用sync參數的狀況下。
將指令變更為如下:
time sh -c “dd if=/dev/zero of=testfile bs=8k count=2500000”

※相同以8K的block size,寫入10GB的資料,時間卻只花費了14.016秒。

由上面結果可了解到,當沒下sync參數時,系統顯示已經完成寫入,但事實上背景還在進行中,當有使用sync參數時,磁碟陣列機的寫入負載時間就對應的起來了。