读性能测试
#
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
阅读(981) | 评论(0) | 转发(0) |