測試磁盤IO性能的幾種方法 在磁盤測試中最關心的幾個指標分別為:iops(每秒執行的IO次數)、bw(帶寬,每秒的吞吐量)、lat(每次IO操作的延遲)。 當每次IO操作的block較小時,如512bytes/4k/8k等,測試的主要是iops。 當每次IO操作的block較大時,如256k/512k/1M等,測試的主要是bw。
1. 最簡單的dd dd是linux自帶的磁盤讀寫工具,可用於測試順序讀寫。 一般而言,磁盤讀寫有兩種方式:BufferIO、DirectIO,DirectIO可以更好的了解純磁盤讀寫的性能。
1.1 dd測試DirectIO iops——寫測試 dd if=/dev/zero of=./a.dat bs=8k count=1M oflag=direct iops——讀測試 dd if=./a.dat of=/dev/null bs=8k count=1M iflag=direct
bw——寫測試 dd if=/dev/zero of=./a.dat bs=1M count=8k oflag=direct bw——讀測試 dd if=./a.dat of=/dev/null bs=1M count=8k iflag=direct
1.2 dd測試BufferIO BufferIO主要出現在一些大文件讀寫的場景,由於使用內存做Cache所以讀寫性能上和DirectIO相比,通常會高很多,尤其是讀,所以這個場景下我們僅關心bw即可。 用dd測試BufferIO的寫時,需要增加一個conv=fdatasync,使用該參數,在完成所有讀寫后會調用一個sync確保數據全部刷到磁盤上(期間操作系統也有可能會主動flush),否則就是主要在測內存讀寫了;另外還有一個參數是oflag=dsync,使用該參數也是走的BufferIO,但卻是會在每次IO操作后都執行一個sync。 通常conv=fdatasync更符合大文件讀寫的場景,所以這里以其作為參數進行測試。
bw——寫測試 dd if=/dev/zero of=./a.dat bs=1M count=8k conv=fdatasync
bw——讀測試 dd if=./a.dat of=/dev/null bs=1M count=8k
2. 更專業的fio fio是專門用於測試磁盤IO的工具,與dd相比那是要強大非常多,它可以用於測試順序讀寫、隨機讀寫、順序混合讀寫、隨機混合讀寫,並且可以調整IO並發量,在測試完成后還會生成一份測試報告,相當給力 本人寫了一個使用fio自動測試並整理報告的腳本,安裝好fio后即可直接使用。 測試腳本地址如下:
https://gist.github.com/sennajox/3667757
3. iozone
1. 最簡單的dd dd是linux自帶的磁盤讀寫工具,可用於測試順序讀寫。 一般而言,磁盤讀寫有兩種方式:BufferIO、DirectIO,DirectIO可以更好的了解純磁盤讀寫的性能。
1.1 dd測試DirectIO iops——寫測試 dd if=/dev/zero of=./a.dat bs=8k count=1M oflag=direct iops——讀測試 dd if=./a.dat of=/dev/null bs=8k count=1M iflag=direct
bw——寫測試 dd if=/dev/zero of=./a.dat bs=1M count=8k oflag=direct bw——讀測試 dd if=./a.dat of=/dev/null bs=1M count=8k iflag=direct
1.2 dd測試BufferIO BufferIO主要出現在一些大文件讀寫的場景,由於使用內存做Cache所以讀寫性能上和DirectIO相比,通常會高很多,尤其是讀,所以這個場景下我們僅關心bw即可。 用dd測試BufferIO的寫時,需要增加一個conv=fdatasync,使用該參數,在完成所有讀寫后會調用一個sync確保數據全部刷到磁盤上(期間操作系統也有可能會主動flush),否則就是主要在測內存讀寫了;另外還有一個參數是oflag=dsync,使用該參數也是走的BufferIO,但卻是會在每次IO操作后都執行一個sync。 通常conv=fdatasync更符合大文件讀寫的場景,所以這里以其作為參數進行測試。
bw——寫測試 dd if=/dev/zero of=./a.dat bs=1M count=8k conv=fdatasync
bw——讀測試 dd if=./a.dat of=/dev/null bs=1M count=8k
2. 更專業的fio fio是專門用於測試磁盤IO的工具,與dd相比那是要強大非常多,它可以用於測試順序讀寫、隨機讀寫、順序混合讀寫、隨機混合讀寫,並且可以調整IO並發量,在測試完成后還會生成一份測試報告,相當給力 本人寫了一個使用fio自動測試並整理報告的腳本,安裝好fio后即可直接使用。 測試腳本地址如下:

3. iozone