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