Linux 中使用 dd 测试磁盘性能
翻译自 : 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 测试磁盘性能的更多相关文章
- 【转】dd命令详解及利用dd测试磁盘性能
dd命令详解及利用dd测试磁盘性能 linux下dd命令详解 名称: dd 使用权限: 所有使用者 manpage 定义: convert and copy a file 使用方式: dd [op ...
- 使用SQLIO测试磁盘性能
SQLIO 是一个用于测试存储系统能力的命令行工具,用以获取存储系统相关的性能指标,以判断系统的 I/O 处理能力. 在微软的网站可以下载 SQLIO 的安装包,安装后目录中会出现如下文件: EULA ...
- Linux如何查看与测试磁盘IO性能
1. 查看磁盘 IO 性能 1.1 top 命令 top 命令通过查看 CPU 的 wa% 值来判断当前磁盘 IO 性能,如果这个数值过大,很可能是磁盘 IO 太高了,当然也可能是其他原因,例如网络 ...
- linux用dd测试磁盘速度
[root@localhost ~]# time dd if=/dev/zero bs=1024 count=1000000 of=/1Gb.file记录了1000000+0 的读入记录了100000 ...
- 【Linux】time+dd测试硬盘读写速度
dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. dd 命令通用语法格式如下: dd if=path/to/input_file ...
- iozone测试磁盘性能
什么是iozone? iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能. 可以测试 Read, write, re-read,re-write, read ...
- 使用iozone测试磁盘性能
IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...
- 使用iozone测试磁盘性能(测试文件读写)
IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random w ...
- 正确用DD测试磁盘读写速度
转自:http://blogread.cn/it/article/6479?f=wb 问: 以下几种方式测试磁盘读写速度有什么区别? dd bs=1M count=128 if=/dev/zero o ...
随机推荐
- opencart
1. Deleting english language, what happens? Disable English tab , category and products 1) Fir ...
- linux tomcat shutdown.sh 不能正常关闭
一般造成这种原因是因为项目中有非守护线程的存在 基本原理为启动tomcat时记录启动tomcat的进程id(pid),关闭时强制杀死该进程 1.找到tomcat下bin/catalina.sh文件,v ...
- matlab edge
edge在matlab中用来进行边缘检测BW = edge(I) 采用灰度或一个二值化图像I作为它的输入,并返回一个与I相同大小的二值化图像BW,在函数检测到边缘的地方为1,其他地方为0. BW = ...
- openstack之Glance介绍
什么是Glance glance即image service(镜像服务),是为虚拟机的创建提供镜像服务 为什么要有Glance 我们基于openstack是构建基本的Iaas平台对外提供虚机,而虚机在 ...
- Codeforces Round #517 Div. 1翻车记
A:真的懵逼了.冷静了半天之后决定二分一下答案,然后先a安排上尽量小的再贪心地一个个扩大.40min才过.这个做法非常怂的以代码复杂度和时间复杂度为代价换取了比较稳的正确性,事实上由于1~n可以组合出 ...
- [洛谷P3250][HNOI2016]网络
题目大意:给定一棵树.有三种操作: $0\;u\;v\;t:$在$u$到$v$的链上进行重要度为$t$的数据传输. $1\;x:$结束第$x$个数据传输. $2\;x:$询问不经过点$x$的数据传输中 ...
- YY的GCD 莫比乌斯反演
---题面--- 题解: $ans = \sum_{x = 1}^{n}\sum_{y = 1}^{m}\sum_{i = 1}^{k}[gcd(x, y) == p_{i}]$其中k为质数个数 $$ ...
- [HAOI2006]受欢迎的牛 tarjan缩点 + 拓扑排序
---题面--- 题解: 首先tarjan缩点应该还是容易想到的,因为喜爱具有传递性,所以一个强联通分量里面的点实际上是全部等效的,所以我们可以缩成一个方便判断, 缩完点之后整张图就变成了一个有向无环 ...
- POJ3630:Phone List——题解
http://poj.org/problem?id=3630 简单的trie树问题,先添加,然后每个跑一边看中途有没有被打上结束标记即可. #include<cstdio> #includ ...
- POJ2942:Knights of the Round Table——题解
http://poj.org/problem?id=2942 所写的tarjan练习题最难的一道. 说白了难在考得不是纯tarjan. 首先我们把仇恨关系处理成非仇恨关系的图,然后找双连通分量,在双连 ...