翻译自 : 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. lintcode-171-乱序字符串

    171-乱序字符串 给出一个字符串数组S,找到其中所有的乱序字符串(Anagram).如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中. 注意事项 所有的字符串都只包 ...

  2. iOS- UITableViewCell对象是怎么重用的 ?

    iOS设备的内存有限,如果用UITableView显示成千上万条数据, 就需要成千上万个UITableViewCell对象的话, 那将会耗尽iOS设备的内存.要解决该问题,需要重用UITableVie ...

  3. TFS持续集成

    TFS持续集成的就是跟踪代码变更,合并,能够自定义脚本,任务进行自动化测试,发版,部署,有点像docker的味道.在这个代理服务器分布式中tfsserver起着能够随时拿去最新代码能够统一执行任务的角 ...

  4. SPDY以及HTTP2.0

    背景介绍 HTTP2.0跟SPDY在不少理念上是相似的,目的都是为了提升HTTP1.1的性能. HTTP2.0将会是业界的标准,比SPDY要完善,今后可能会都转向http2.0而放弃SPDY. SPD ...

  5. 第26天:js-$id函数、焦点事件

    一.函数return语句定义函数的返回值,在函数内部用return来设置返回值,一个函数只能有一个返回值.同时,终止代码的执行.所有自定义函数默认没有返回值return后面不要换行 var a=10, ...

  6. 【.Net】c# 中config.exe 引发的一些问题

    public static void CreateConfig(){ //c#可以添加内置的app.config,我们通过ConfigrationManager类可以 //可以很轻松的操作相关节点,操 ...

  7. 【bzoj1614】[Usaco2007 Jan]Telephone Lines架设电话线 二分+SPFA

    题目描述 Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务.于是,FJ必须为此向电信公司支付一定的费用. FJ的农场周围分布着N(1 <= N <= 1 ...

  8. BZOJ4897 THUSC2016成绩单(区间dp)

    拿走一个区间的代价只与最大最小值有关,并且如果最后一次拿走包含区间右端点的子序列一定不会使答案更劣,于是设f[i][j][x][y]为使i~j区间剩余最小值为x最大值为y且若有数剩余一定包含j的最小代 ...

  9. P1667 数列

    题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足Ax +Ax+1 +…+ AY<0, ...

  10. BZOJ5319 & 洛谷4559 & LOJ2551:[JSOI2018]军训列队——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5319 https://www.luogu.org/problemnew/show/P4559 ht ...