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 ...
随机推荐
- C++计算器项目的初始部分(第三次作业)
C++计算器项目的初始部分 项目源文件地址:calculator 项目信息: * 项目名称:Calculator * 项目实现: * 对四则运算表达式进行拆解 * 对拆解的表达式进行简单的错误判断 * ...
- Swift-可选值(Optional)讲解
前提:Swift中有规定:对象中的任何属性在创建时,都必须要有明确的初始化值 1.定义可选类型 方式一:常规方式(不常用) var name : Optional<String> = ni ...
- Gitkraken系列-Gitkraken使用操作
一个优秀的团队合作离不开git,一个优秀的程序员也离不开git.gitkraken是我在进行软工实践这门课接触到的git的UI界面的工具,它给我留下的印象就是非常好用和方便 怎么个方便法呢? 方便的安 ...
- Redis的概述和简单使用(转载)
文章来源:http://jingyan.baidu.com/article/db55b60996d0124ba30a2f92.html Redis是一个基于key-value的高速缓存系统,类似于me ...
- Android Camera多屏幕适配解决预览照片拉伸
通常,拍照预览页面的照片拉伸主要与下面两个因素有关: 1. Surfaceview的大小 2. Camera中的Preview的大小 如下图: 图中preview显示的是手机支 ...
- JAVA IDE IntelliJ IDEA使用简介(二)—之基本操作
一.在编辑器中打开文件 1.可以使用下面的几种方式打开project内的文件进行编辑 (·)在project窗口中双击需要编辑的文件. (·)在project窗口选择需要编辑的文件,按F4 ( ...
- 使用oledb读取excel表
string path = "C:\\Users\\aaa\\Desktop\\aa.xls"; string conn = "Provider = Microsoft. ...
- bzoj4278[ONTAK2015]Tasowanie & bzoj1692[USACO 2007Dec]队列变换(Best Cow Line) 贪心正确性证明
做法网上到处都有就不说了. 这题其实是之前做的….不过由于人太傻现在才想明白比较字典序进行贪心的正确性…. 方便起见,在两个串的最右端都加上很大但不相同的字符,避免第lcp+1个字符不存在的边界. 如 ...
- 【bzoj5094】硬盘检测 乱搞
题目描述 已知从 $n$ 个不同的32位无符号整数中随机选 $m=10000$ 次所得的结果,求可能性最大的 $n$ ,其中 $n=10^k,1\le k\le 7$. 输入 第一行包含一个正整数m( ...
- BZOJ4754 JSOI2016独特的树叶(哈希)
判断两棵无根树是否同构只需要把重心提作根哈希即可.由于只添加了一个叶子,重心的位置几乎不发生偏移,所以直接把两棵树的重心提起来,逐层找哈希值不同且对应的两子树即可.被一个普及组子问题卡一年. #inc ...