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:代表速率

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