写速度:
time dd if=/dev/zero of=test.dbf bs=8k count=300000
其中/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。
输出的结果类似(因为一般更长测试时间更准确,所以可以设置count大一些):
300000+0 records in
300000+0 records out
real 0m36.669s
user 0m0.185s
sys 0m9.340s
所以写速度为:8*300000/1024/36.669=63.916M/s
读速度:
time dd if=/dev/sda1 of=/dev/null bs=8k
因为/dev/sdb1是一个物理分区,对它的读取会产生IO,/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO,所以,这个命令的IO只发生在/dev/sdb1上,也相当于测试磁盘的读能力
输出的结果类似:
448494+0 records in
448494+0 records out
real 0m51.070s
user 0m0.054s
sys 0m10.028s
所以sda1上的读取速度为:8*448494/1024/51.070=68.61M/s
补充:Windows下安装Cygwin也可以使用time和dd命令,而且输出结果中直接包含IO的时间和速度,有兴趣的朋友可以试一下,不过我测试下来的速度读写都只有40多M每秒,不知道是否是平台的原因,可能Cygwin的机制和Linux下还是有所不同吧。
《测试磁盘IO》
读性能测试
# 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
(一) Direct IO
在有些系统上,没有mtd节点或者不能直接操作存储设别,如果想测试文件读写性能,如何消除文件系统的影响呢?
dd命令有一组参数oflag和iflag, 控制源文件和目标文件的读写方式为direct IO,即读或写文件时越过操作系统的读写buffer。如果指定oflag=direct,nonblock,写文件时忽略cache的影响;而如果指定iflag=direct,nonblock,读文件时忽略cache的影响
下面就是一组实测数据,从中可以看出cache对最终性能的影响。
(二) 拷贝屏幕
利用dd可以实现截屏,假设屏幕对应的设备节点/dev/fb0,屏幕大小是600×800,屏幕像素的格式是rgb565(每个像素对应两个字节),则命令如下:
反之,也可以利用dd,直接写屏幕,例如下面的命令将随机渲染屏幕:
(三) 串口读写
dd还可以写串口,假设串口节点为/dev/ttyS0, 下面的命令将文件写入串口中:
转载于:https://blog.51cto.com/4519154/1890958