测试磁盘读写性能

读性能测试
#  time dd  iflag=direct,nonblock  if=/dev/sda2 of=/dev/null bs=8k count=8388608

因为/dev/sda2是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力。

写测试

time dd oflag=direct,nonblock if=/dev/zero f=/opt/iotest bs=8k count=8388608 

因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。
 
读写测试

#  time dd iflag=direct,nonblock oflag=direct,nonblock if=/dev/sda2 f=/opt/iotest bs=8k count=8388608  
 
注:bs是一次io读的规模,理论上bs越大,所测得性能越高        count是读多少个"bs",也可以写成count=16G
     
规避掉文件系统cache,直接读写,不使用buffer cache
iflag=direct,nonblock

oflag=direct,nonblock

iflag=cio

oflag=cio
 
direct 模式就是把写入请求直接封装成io 指令发到磁盘
非direct 模式,就把数据写入系统缓存,然后就认为io 成功,并由操作系统决定缓存中的数据什么时候被写入磁盘 


使用hdparm命令来查看硬盘缓存的读速度。


我建议你运行下面的命令2-3次来对设备读性能进行检测,以作为参照和相互比较:


### 有缓存的硬盘读性能测试——/dev/sda ###

hdparm -t /dev/sda1


## 或者 ##


hdparm -t /dev/sda




## Cache读基准——/dev/sda ###


hdparm -T /dev/sda1


## 或者 ##


hdparm -T /dev/sda




hdparm -Tt /dev/sda




为了获得精确的读测试数据,首先在测试前运行下列命令,来将缓存设置为无效:


flush
echo 3 | sudo tee /proc/sys/vm/drop_caches


time time dd if=/path/to/bigfile of=/dev/null bs=8k




### 带有Cache的Debian系统笔记本吞吐率###


dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct


###使cache失效###


hdparm -W0 /dev/sda


###没有Cache的Debian系统笔记本吞吐率###


dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct 






## 运行这个命令2-3次来获得更好地结果 ###


time sh -c "dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync"  






//写////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


[root@localhost ~]#  sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd bs=1M count=20000)"


记录了20000+0 的读入
记录了20000+0 的写出


20971520000字节(21 GB)已复制,10.2713 秒,2.0 GB/秒


real 10.27
user 0.00
sys 10.26


//读////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


[root@localhost ~]#  echo 3 > /proc/sys/vm/drop_caches ; /usr/bin/time -p dd if=test.dd of=/dev/null bs=1M


记录了20000+0 的读入
记录了20000+0 的写出
20971520000字节(21 GB)已复制,23.9553 秒,875 MB/秒
real 23.98
user 0.00
sys 5.58


你可能感兴趣的:(测试磁盘读写性能)