4种常用磁盘性能测试工具之dd

本文详细介绍在Linux环境下,使用dd、fio、iozone、filebench四种工具进行磁盘性能测试的方法。通过实际操作,包括单进程和多进程的读写测试,分析了如何准确评估磁盘性能,强调了内存清理和合理线程配置的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍在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:代表速率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值