文档章节

dd测试硬盘性能

 小小人故事
发布于 2015/12/25 10:29
字数 1088
阅读 17
收藏 2
点赞 0
评论 0

下面直接介绍几种常见的DD命令,先看一下他的区别~

dd if=/dev/zero of=test bs=64K count=1
dd if=/dev/zero of=test bs=64K  count=1; sync
dd if=/dev/zero of=test bs=64K  count=1 conv=fdatasync
dd if=/dev/zero of=test bs=64K  count=1 oflag=dsync


这四条DD命令区别在于内存中写缓存的处理方式。

1.

dd if=/dev/zero of=test bs=64K  count=1

  没有加任何参数,dd默认的方式不包括“同步(sync)”命令。也就是说,dd命令完成前并没有让系统真正把文件写到磁盘上。所以以上命令只是单纯地把这128MB的数据读到内存缓冲当中(写缓存[write cache])。所以你得到的将是一个超级快的速度。因为其实dd给你的只是读取速度,直到dd完成后系统才开始真正往磁盘上写数据,但这个速度你是看不到了。所以如果这个速度很快,没有什么作用。

实际运行结果:

记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,2.00737 秒,52.2 MB/秒

2.

dd if=/dev/zero of=test bs=64K  count=1; sync

  和前面1中的完全一样。分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。

实际运行结果:

记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,2.06546 秒,50.8 MB/秒

3.

dd if=/dev/zero of=test bs=64K count=1 conv=fdatasync

  加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,所以这时候你得到的是读取这128M数据到内存并写入到磁盘上所需的时间,这样算出来的时间才是比较符合实际使用结果的。

实际运行结果:

记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,2.59843 秒,40.4 MB/秒

4.

dd if=/dev/zero of=test bs=64K count=1 oflag=dsync

  加入这个参数后,dd在执行时每次都会进行同步写入操作。也就是说,这条命令每次读取64k后就要先把这64k写入磁盘,然后再读取下面这64k,一共重复128次。这可能是最慢的一种方式了,因为基本上没有用到写缓存(write cache)。

实际运行结果:

记录了1+0 的读入
记录了1+0 的写出
104857600字节(105 MB)已复制,2.0844 秒,50.3 MB/秒

  一般来说,第四种方法是最严格的,可以模拟数据库的插入操作,所以很慢,也是用来测试vps硬盘性能标准的一条标杆,一般来说测试结果,如果超过10M,对正常建站就无影响。超过50M,就是非常给力状态,看了这个vps硬盘性能非常的好,DD速度达到了78.9MB/s。

  在这几条命令中,bs=64k表示同时读入/输出的块大小为64k个字节,count=4k表示拷贝块的个数为4000个,如果测试再严格一点,我们运行1G数据量的DD:

dd if=/dev/zero of=test1 bs=64k count=16k oflag=dsync
表示每个块大小为64k个字节,测试16k个数量的块,实际测试结果:

记录了16384+0 的读入
记录了16384+0 的写出
1073741824字节(1.1 GB)已复制,125.424 秒,8.6 MB/秒

#阿里云硬盘真够烂的

#看另一台国外的vps
[root@166087 ~]# dd if=/dev/zero of=test1 bs=64k count=16k oflag=dsync
记录了16384+0 的读入
记录了16384+0 的写出
1073741824字节(1.1 GB)已复制,15.0148 秒,71.5 MB/秒

  写到这里,我觉得利用DD命令测试硬盘应该很清楚了,通常我们测试用第四条命令即可,当然DD越快并不能代表服务器的性能好坏,普通硬盘的服务器执行DD命令结果在30M左右就不错了,另外,执行DD命令测试硬盘IO性能,对硬盘的损害很大,不建议多次或长时间尝试!


© 著作权归作者所有

共有 人打赏支持
粉丝 3
博文 73
码字总数 22668
作品 0
昌平

暂无文章

Java示例演示Functor 和monad

This article was initially an appendix in our Reactive Programming with RxJavabook. However introduction to monads, albeit very much related to reactive programming, didn't suit......

Quan全
12分钟前
0
0
微信官方jssdk Demo

1.html部分 <!DOCTYPE html><!-- saved from url=(0028){sh:$selfUrl} --><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"......

koloor
16分钟前
0
0
数据库命名规范

https://www.cnblogs.com/pangguoming/p/7126512.html 摘要:当前研发工作中经常出现因数据库表、数据库表字段格式不规则而影响开发进度的问题,在后续开发使用原来数据库表时,也会因为数据...

塔塔米
16分钟前
0
0
java https 请求工具类-通用

package com.ra.common.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintW......

轻量级赤影
17分钟前
0
0
MFC界面套包BCG Pro Edition for MFC正式发布v27.3|附下载

BCGControlBar Professional Edition for MFC是MFC的一个扩展库,您可以用来构建类似于Microsoft Office 2000/XP/2003/2007/2010/2013 和 Microsoft Visual Studio-like(打印、用户定制工具......

Miss_Hello_World
17分钟前
0
0
Spring Cloud云服务 - HongHu架构common-service 项目构建过程

上一篇我们介绍了《整合spring cloud云服务架构 - HongHu云架构common-service代码结构分析》,本节我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来...

itcloud
18分钟前
0
0
Connection reset

在使用HttpClient调用后台resetful服务时,“Connection reset”是一个比较常见的问题,有同学跟我私信说被这个问题困扰很久了,今天就来分析下,希望能帮到大家。例如我们线上的网关日志就会...

夜黑人模糊灬
22分钟前
0
0
如何写PHP规范注释

所有的文档标记都是在每一行的 * 后面以@开头。如果在一段话的中间出来@的标记,这个标记将会被当做普通内容而被忽略掉。 @access 该标记用于指明关键字的存取权限:private、public或prote...

度_
23分钟前
0
0
influxDB Ppostgis

PostGis 1.需要安装postgreSQL,postgis作为插件嵌入到postgreSQL中; 2.使用zip包直接安装,需要修改 makepostgisdb_using_extensions.bat文件中的路径,用户名,密码,然后直接运行; 3.没有...

courtzjl
26分钟前
0
0
多线程Thread-多线程顺序执行

需求:现在有两个任务,任务1和任务2,任务1中有多个线程,并且任务2必须等任务1完成后才能执行。 namespace TThread{ class Program { static void Main(string[] ar...

kaixinguo314
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部