zoukankan      html  css  js  c++  java
  • dd测试硬盘性能

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

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

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

    1.

    dd bs=64k count=4k if=/dev/zero of=test

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

    实际运行结果:

    268435456 bytes (268 MB) copied, 1.3529 seconds, 198 MB/s

    2.

    dd bs=64k count=4k if=/dev/zero of=test; sync

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

    实际运行结果:

    268435456 bytes (268 MB) copied, 0.522815 seconds, 513 MB/s

    3.

    dd bs=64k count=4k if=/dev/zero of=test conv=fdatasync

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

    实际运行结果:

    268435456 bytes (268 MB) copied, 2.8046 seconds, 95.7 MB/s

    4.

    dd bs=64k count=4k if=/dev/zero of=test oflag=dsync

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

    实际运行结果:

    268435456 bytes (268 MB) copied, 3.40069 seconds, 78.9 MB/s

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

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

    dd if=/dev/zero of=test bs=64k count=16k oflag=dsync

    表示每个块大小为64k个字节,测试16k个数量的块,实际测试结果:

    1073741824 bytes (1.1 GB) copied, 18.9098 seconds, 56.8 MB/s

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

  • 相关阅读:
    EXTJS 4.2 资料 控件之checkboxgroup的用法(静态数据)
    EXTJS 4.2 资料 控件之Window窗体相关属性的用法
    EXTJS 4.2 资料 控件之textfield文本框加事件的用法
    Entity Framework 学习笔记(一)之数据模型 数据库
    EXTJS 4.2 资料 控件之checkboxgroup的用法(动态数据)
    EXTJS 4.2 资料 控件之Grid 列鼠标悬停提示
    Entity Framework 学习笔记(二)之数据模型 Model 使用过程
    EXTJS 4.2 资料 控件之radiogroup 的用法
    EXTJS API
    vue移动端弹框组件,vue-layer-mobile
  • 原文地址:https://www.cnblogs.com/gaohong/p/4663738.html
Copyright © 2011-2022 走看看