翻译自 : Linux I/O Performance Tests using dd

基本说明

dd 可以用来做简单的低级别复制文件. 这样做, 一般都是可一直直接访问设备文件. 需要说明的是, 错误的使用 dd造成数据的丢失. 强烈推介用以下描述的步骤来完成性能测试.

再强调一遍: 错误的使用dd, 会造成数据的丢失!

写性能测试

现代操作系统不是直接把数据写入 RAID 系统或者磁盘内, 当前未被使用的临时内存(temporary memory),会用来缓存读写数据.

所以, 如果要去除临时内存对于我们测试磁盘 I/O 的影响, 我们可以使用参数 oflag 参数来定义. 以下是 oflag 支持的标记: ( 具体可以 man dd )

  • direct : 对数据使用直接 I/O
  • dsync : 对数据使用同步 I/O
  • sync : 对数使用同步 I/O, 同样也适用于元数据

为了测试写性能, 数据需要从 /dev/zero 读入, 理想情况是将这些读入的数据写入空的 RAID 阵列, 物理磁盘, 分区 ( 比如使用参数 of=/dev/sda 指定一块磁盘, 或者 of=/dev/sda2 指定一个分区). 如果这些资源都比较紧张, 一个普通文件也可以被当做写入的目标 ( 比如 of=/root/testfile).

从安全考虑出发, 以下的例子使用 写入文件 的方式来测试磁盘性能. 所以写性能会稍微慢一些 ( 因为元数据需要写入文件系统).

重要 : 当写入对象是设备的时候(比如: /dev/sda) , 存储的数据都会丢失. 因此, 实验的对象最好是空的 RAID阵列, 硬盘, 分区.

说明

  • 当使用 if=/dev/zero, bs=1G 的时候, Linux 系统需要 1GB的空闲 RAM. 如果测试环境中没有足够的 RAM, 可以将 bs 的值设定小一些 ( 比如 512MB)
  • 为了获取更加真实的测试结果, 最好多测试几次( 比如 3-10 次). 这样做可以可以很快的发现异常值. 导致这些异常值得原因可能是因为定时任务, 中断 或者一般情况下的多进程运行. 这些都会影响测试结果. 一个极端的例子是, 避免这个问题是在测试的时候并行执行 updatedb

笔记本磁盘性能测试

一次写入 1GB 数据. 激活缓存 ( hdparm -W1 /dev/sda )

root@grml ~ # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 32.474 s, 33.1 MB/s

一次写入 1 GB 的数据. 关闭缓存 (hdparm -W0 /dev/sda)

root@grml ~ # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 123.37 s, 8.7 MB/s

512字节的数据写入1000次. 激活缓存( hdparm -W1 /dev/sda)

[root@localhost ~]# dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=direct
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.317395 s, 1.6 MB/s

512字节的数据写入1000次. 关闭缓存( hdparm -W0 /dev/sda)

root@grml ~ # dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=direct
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 11.1865 s, 45.8 kB/s

RAID10 性能测试

一次写入1GB文件.

test-sles10sp2:~ # dd if=/dev/zero of=/root/testfile bs=1G count=1 oflag=dsync
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 5.11273 seconds, 210 MB/s

512KB 写入 1000次

test-sles10sp2:~ # dd if=/dev/zero of=/root/testfile bs=512 count=1000 oflag=dsync
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.083902 seconds, 6.1 MB/s

读性能测试

使用 dd 测试读性能

test-sles10sp2:~ # dd if=/root/testfile of=/dev/null bs=512 count=1000
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 5.11273 seconds, 210 MB/s

使用 hdparm 测试磁盘读性能

[root@localhost ~]# hdparm -t /dev/sda

/dev/sda:
Timing buffered disk reads: 302 MB in 3.00 seconds = 100.51 MB/sec

Linux 中使用 dd 测试磁盘性能的更多相关文章

  1. 【转】dd命令详解及利用dd测试磁盘性能

    dd命令详解及利用dd测试磁盘性能   linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [op ...

  2. 使用SQLIO测试磁盘性能

    SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...

  3. Linux如何查看与测试磁盘IO性能

    1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 ...

  4. linux用dd测试磁盘速度

    [root@localhost ~]# time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file记录了1000000+0 的读入记录了100000 ...

  5. 【Linux】time+dd测试硬盘读写速度

    dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. dd 命令通用语法格式如下: dd if=path/to/input_file ...

  6. iozone测试磁盘性能

    什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...

  7. 使用iozone测试磁盘性能

    IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...

  8. 使用iozone测试磁盘性能(测试文件读写)

    IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...

  9. 正确用DD测试磁盘读写速度

    转自:http://blogread.cn/it/article/6479?f=wb 问: 以下几种方式测试磁盘读写速度有什么区别? dd bs=1M count=128 if=/dev/zero o ...

随机推荐

  1. vagrant简单学习使用

    1.安装vagrant 旧版本的vagrant可以在http://downloads.vagrantup.com/下载,支持的系统平台有mac,debian/ubuntu, centos,window ...

  2. 3dContactPointAnnotationTool开发日志(一)

      周日毕设开题报告结束后浪了一天,今天又要开始回归正轨了.毕设要做一个人和物体的接触点标注工具,听上去好像没啥难度,其实实现起来还是挺麻烦的.   今天没做啥,就弄了个3d场景做样例.把界面搭了一下 ...

  3. 第三部分shell编程3(shell脚本编写1)

    做监控和备份最多 1. shell脚本是什么它是一种脚本语言,并非编程语言可以使用一些逻辑判断.循环等语法可以自定义子函数是系统命令的集合shell脚本可以实现自动化运维,大大增加我们的工作效率 第一 ...

  4. SonarQube安装

    要求 至少1G以上内存,推荐为2G Java:Oracle JRE 7u75+,OpenJDK 7u75+ 数据库: Microsoft SQL Server 2008/2012/2014 MySQL ...

  5. 从实战角度浅析snmp

    Snmp  Simple Network Management Protocol Snmp最终是为五花八门的网管软件服务的,由于接触的网管软件较少,所以对snmp的理解至今还仅限于初级配置阶段.以下言 ...

  6. BZOJ 2337 XOR和路径(概率DP)

    求点1到点n经过的路径权值异或和的期望. 考虑按位计算,对于每一位来说,令dp[i]表示从i到n的异或和期望值. 那么dp[i]=sum(dp[j]+1-dp[k]).如果w(i,j)这一位为0,如果 ...

  7. BZOJ 2333 棘手的操作(离线+线段树+带权并查集)

    这题搞了我一天啊...拍不出错原来是因为极限数据就RE了啊,竟然返回WA啊.我的线段树要开8倍才能过啊... 首先可以发现除了那个加边操作,其他的操作有点像线段树啊.如果我们把每次询问的联通块都放在一 ...

  8. CodeChef LEMOVIE

    题意:给你n个数字(下标不同数值相同的数字应当被认为是不同的数字),有n!种排列方式.每种排列方式的价值定义为:第一次出现时比前面的所有数字都大的数值个数. 比如1,2,2,3这个排列中,1,2,3这 ...

  9. html的head内标签

    ctrl+?:自动注释 ctrl+/:  注释多行,再按一次,取消注释的多行. 一,*********本地测试的方法:1-找到文件路径,直接浏览器打开:2-pycharm打开测试. 二,模板的解释: ...

  10. CentOS httpd服务(Apache)

    1.从ISO镜像安装,Apache 服务的软件包名称为 httpd #检查源配置[root@localhost media]# cat /etc/yum.repos.d/CentOS-Media.re ...