使用 dd 命令进行磁盘读写测试,相认大家可能都做过,尤其是在测试 VPS 磁盘性能时。
关于该命令的及其参数的详细说明,请查看手册(执行如下命令):
info coreutils 'dd invocation'
如果你在进行磁盘性能测试时,使用的是下面的命令:
dd if=/dev/zero of=test bs=64k count=4k
那么,请你继续看本文。因为这么测试得到的结果是不准确的。
现在我们再来回顾下如下两个常用命令:
模拟数据库插入操作(少量数据频繁写入测试):
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
大数据连续写入测试:
dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync
先介绍下 conv 参数 CONVS 的含义:
‘fdatasync’
Synchronize output data just before finishing. This forces a
physical write of output data.
‘fsync’
Synchronize output data and metadata just before finishing.
This forces a physical write of output data and metadata.
这两个参数的区别就在于是否写入元数据。
再介绍下 oflag 参数 FLAGS 的含义:
‘dsync’
Use synchronized I/O for data. For the output file, this
forces a physical write of output data on each write. For the
input file, this flag can matter when reading from a remote
file that has been written to synchronously by some other
process. Metadata (e.g., last-access and last-modified time)
is not necessarily synchronized.
‘sync’
Use synchronized I/O for both data and metadata.
这两个参数的区别也在于是否写入元数据。
看完了参数说明,我们再来说说上面的两行命令,这两行命令,都是测试磁盘写入性能的,只不过执行第一个命令时,需要很长的时间(以下测试数据来源于我在 AWS 上的免费 EC2 服务器。OS: RHEL7.3 64位):
$ dd if=/dev/zero of=test bs=64k count=4k oflag=dsync
记录了4096+0 的读入
记录了4096+0 的写出
268435456字节(268 MB)已复制,48.6814 秒,5.5 MB/秒
$ dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync
记录了262144+0 的读入
记录了262144+0 的写出
2147483648字节(2.1 GB)已复制,41.277 秒,52.0 MB/秒
我们会发现第一行命令执行完,仅生成了 268 MB 的数据,用时却长达 48+ 秒。
而第二行命令执行完,虽然生成了 2.1GB 的数据,比第一行命令生成的数据大的多,但是用时却只有 41+ 秒,反而用时少。
为什么呢?
请注意下 oflag=dsync 参数,这个参数表明每当需要写数据时都会真正到写到磁盘上,等写到磁盘上之后,才会继续开始下一次数据写入。第一行命令要求反复写 4k 次数据,也就是说,会真正写磁盘 4k 次,用时长是理所当然的。
而第二行命令,虽然总共要写 2.1 GB 的数据,但是由于使用的是 conv=fdatasync 参数,也就是说,当 dd 命令结束前,一次性把所有的数据写到磁盘上,因此写入速度非常快。
我们再做一个测试,还是使用上面两个命令,参数相同,不同的仅是 count 参数设置为 1,bs 设置为 256 MB。那么根据之前的说明,我们可以推测,两次测试的结果应该是相近的。
$ dd if=/dev/zero of=test bs=256MB count=1 oflag=dsync
记录了1+0 的读入
记录了1+0 的写出
256000000字节(256 MB)已复制,3.85186 秒,66.5 MB/秒
$ dd if=/dev/zero of=test bs=256MB count=1 conv=fdatasync
记录了1+0 的读入
记录了1+0 的写出
256000000字节(256 MB)已复制,4.23802 秒,60.4 MB/秒
引用地址:
http://www.hostloc.com/thread-256990-1-1.html
http://blog.csdn.net/menogen/article/details/38059671
分享到:
相关推荐
hprof-conv.exe 在sdk tools 里面缺少这个运行文件导致DDMS files not found: tools\hprof-conv.exe 错误 , 详细看博客:https://blog.csdn.net/DickyQie/article/details/79657573
对caffe的训练model和prototxt文件进行layer参数读取,主要对conv、pool和inner里面参数读取
DO-Conv:深度超参数化卷积层 由金明曹,创建,孙铭超,, ,,和...换句话说,DO-Conv是唯一且仅在基线上进行更改的工具,并且没有进行任何超参数调整来支持DO-Conv。我们认为GluonCV具有很高的重现性,但是,为了尽可
Matlab中filter和conv函数的区别
arc_conv_r55解包工具
主要介绍了基于Keras中Conv1D和Conv2D的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
arc_conv========Command-line visual novel toolkit written by w8m in pure ASM
目标检测算法YOLOv3的预训练模型,原地址下载太慢,上传一下以便以后使用
1.Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)(完整源码和数据) 2.Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)(完整源码和数据) 4.代码特点:参数化编程、...
各种卷积计算性能对比(Conv,DwConv,GhostConv,PConv,DSConv,DCNV),包括推理时间,GFlops,FPS
hprof-conv.exe 关于sdk tools 里面缺少这个运行文件
yolov4: yolov4-conv-137 预训练模型 + yolov4 作者训练好的模型 不想花积分的,可以去这个链接直接下载:https://blog.csdn.net/baobei0112/article/details/105971290
2.运行命令行adb kill-server、adb start-server 3.关掉adb.exe进程,然后重启Eclipse。 仍无法解决问题时可尝试先找一下在sdk\tools目录下是否有hprof-conv.exe,如果有将tools下面的hprof-conv.exe文件都复制到...
arc_conv_r54,用于游戏解包,兼容性相对较好
pytorch yolov3 目标检测 yolov3-tiny.conv.15 yolov3 yolov3-tiny.conv.15 权重文件
causal-conv1d Windows 下whl 直接 pip install 安装这个whl即可。
一、Linux dd命令用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。 使用方法:dd [OPERAND] 参数注释: bs=BYTES read and write BYTES bytes at a time (also see ibs=,obs=) cbs=BYTES convert ...
pytorch yolov3 目标检测 darknet53.conv.74 https://pjreddie.com/media/files/darknet53.conv.74 yolov3 权重文件
hprof-conv ,内存转mat工具