测试磁盘读写性能

xiaoxiao2021-02-28  114

读性能测试 #  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
转载请注明原文地址: https://www.6miu.com/read-82186.html

最新回复(0)