4種常用磁盤性能測試工具之dd

本文主要介紹在linux操作系統下,4種磁盤性能測試工具,如:dd、fio、iozone、filebench,並根據實際測試的結果進行簡要分析。
重點提示:
(1)先寫後讀這樣的操作,要在讀的時候先清空內存,否則測試出來的值不真實。

echo 3 > /proc/sys/vm/drop_caches

(2)單塊磁盤,開到的線程最好在2~3之間,否則進程太多測試的值也偏低。

一、dd(使用oflag/iflag標識儘量避免內存的影響)

1.1 dd單進程寫

  1. 第一種情況:用dd讀取一個2G大小的文件2G.zip,並寫入到/tmp/2G-copy.zip文件中。
time dd if=2G.zip of=/tmp/2G-copy.zip bs=1M count=2048 oflag=direct
  1. 第二種情況:直接用dd生成一個2G大小的文件
time dd if=/dev/zero of=/tmp/2G-copy.zip bs=1M count=2048 oflag=direct

1.2 dd單進程讀

直接用dd讀取1.1寫入生成的文件:

time dd if=/tmp/2G-copy.zip of=/dev/null bs=1M count=2048 iflag=direct

1.3 dd多進程寫

#!/bin/bash
nbthread=2
blocksize=1
size=1024
start=$(date +%s.%N)
for ((i=0;i<$nbthread;i++));do
	echo dd if=/dev/zero of=f$i bs=${blocksize}M count=$size
	#dd if=/dev/zero of=f$i bs=${blocksize}k count=1000 oflag=direct &
	dd if=/dev/zero of=f$i bs=${blocksize}M count=$size &
done
wait
end=$(date +%s.%N)
echo $start $end
tt=$(echo $end-$start|bc)
rate=$(echo $nbthread*$blocksize*$size/$tt|bc)
printf "rate is %.2f MBytes/s\n" $rate

參數解釋:
nbthread:代表線程數,本案例爲2個線程
blocksize:代表讀寫一次的塊大小,本案例爲1M
size:代表塊個數,本案例爲1024個
rate:代表速率

1.4 dd多進程讀

#!/bin/bash
nbthread=2
blocksize=1
size=1024
start=$(date +%s.%N)
for ((i=0;i<$nbthread;i++));do
	echo dd if=f$i of=/dev/null bs=${blocksize}M count=$size
	#dd if=f$i of=/dev/null bs=${blocksize}M count=$size iflag=direct &
	dd if=f$i of=/dev/null bs=${blocksize}M count=$size
done
wait
end=$(date +%s.%N)
echo $start $end
tt=$(echo $end-$start|bc)
rate=$(echo $nbthread*$blocksize*$size/$tt|bc)
printf "rate is %.2f MBytes/s\n" $rate

參數解釋:
nbthread:代表線程數,本案例爲2個線程
blocksize:代表讀寫一次的塊大小,本案例爲1M
size:代表塊個數,本案例爲1024個
rate:代表速率

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章