之前一直知道用dd(device to device)命令可以简单测试磁盘的IO读写速度,但没有深究。

但这次做性能测试的关系,需要得到一个相对精确的值(之前的测试吃过这方面的亏,插个题外话,性能测试一定要首先确认好测试环境。)网上常见的方法是使用hdparm和dd命令来测试,但实际的使用起来都有问题,而且测试结果总感觉有偏差,心里没底。

于是还是安心研究了下这两个命令,也做了一些测试和分析,简单做下总结。

用法:

1.测试IO读

hdparm -t --direct /dev/sda3

IO读用上面的命令测试即可,不过 hdparm

这个工具需要自己安装,而且需要root用户去执行。

2.测试IO写

sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd bs=1000K count=20000;sync)"

dd bs=1M count=20000 if=/dev/zero of=test.dd conv=fdatasync dd命令测试是IO的顺序写和读方式。

3.查看文件系统块大小

tune2fs -l /dev/sda1 | grep Block

上面的命令行有些复杂,做下详细的解释:

(1)sync

命令用来刷新文件系统的缓冲区,执行sync命令实际的作用是把内存中的数据缓冲写入到磁盘中。

先执行下sync命令,是为了减少对后面测试的影响。也可以使用 echo 3 > /proc/sys/vm/drop_caches 来清除缓存。

(2)time

命令用来测试命令的执行时间,shell内建还有一个time命令,我们这里使用全路径来指定使用的是非内建命令。

-p 选项设置时间的输出格式为POSIX缺省时间格式,单位是秒,在后面的测试小节可以看到time -p

的输出形式。

(3)bash

命令 -c

选项的作用是将后面的字符串参数当作bash脚本来执行,看起来有些画蛇添足,好像直接执行也是可行的,

其实不然,因为后面字符串中包含了两条命令行,而time命令需要统计这两条命令行的执行时间。

(4)小括号的意思是另起一个子进程来执行括号中的脚本,dd

这条命令行这里就不讲了,不知道的话Baidu吧。

重点是sync命令,因为当dd退出时,这条命令行提交的大部分内容都在内存缓冲区(写缓存),甚至如果机器的内存相比于你提交的数据要大得多,

那可能数据都在内存中,而再执行sync才能将内存中的数据写入到磁盘中,否则就成了测试内存的写速度,那显然不是你想要的结果。

测试实践:

在一台内存64G,SAS硬盘上做了一些测试。

测试过程中,需要关注两点,磁盘的读写速度和IO使用率,我们分别使用iopp和iostat工具来观察。

测试写速度:

测试写入20G数据,数据量越大,测试值应该更精确。

# sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd bs=1M count=20000)"

20000+0 records in

20000+0 records out

real 92.87

user 0.00

sys 18.08

写入20000M的时间是92.87s,所以磁盘的写速度为

215.35MB/sec (20000M/92.87)。

使用iostat观测,%util

一直处于100%的状态,而iopp

显示的dd命令写入速度基本和上面计算出的值是一致的(取样时间设置为5s)

# iostat -x 5

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 0.00 0.00 0.20 864.00 1.60 449004.80 519.56 143.61 163.46 1.16 100.00

# iopp -i -k 5

pid rchar wchar syscr syscw rkb wkb cwkb command

32566 1033216 1033216 0 0 0 1034868 0 dd

注:命令行的当前工作目录在分区/dev/sda3上,所以test.dd这个文件也创建在这个分区上,下面的读测试会使用到这个文件。

测试读速度:

将dd

和 hdparm的做一个对比:

# hdparm -t --direct /dev/sda3

/dev/sda3:

Timing O_DIRECT disk reads: 2108 MB in 3.00 seconds = 702.34 MB/sec

hdparm的测试结果为,3s读取了2108MB,读速度为702.34MB。

由于hdparm测试时间太短,iostat和iopp取样时间调整为1s。

iostat -x 1

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 0.00 0.00 2752.00 1.00 1409024.00 8.00 511.82 4.64 1.69 0.35 96.10

iopp -i -k 1

pid rchar wchar syscr syscw rkb wkb cwkb command

32349 733184 0 0 0 733184 0 0 hdparm

使用dd做读取测试

# echo 3 > /proc/sys/vm/drop_caches ; /usr/bin/time -p dd if=test.dd of=/dev/null bs=1M

20000+0 records in

20000+0 records out

real 35.69

user 0.00

sys 9.81

读取了20G,读速度为560.38MB/sec。

读取会比写入要快,iostat和iopp的取样时间调整为每3s。

Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda 106.67 0.00 5851.00 0.33 1434256.00 2.67 245.12 1.62 0.28 0.16 93.60

pid rchar wchar syscr syscw rkb wkb cwkb command

17004 1449984 1449984 1 1 1450760 0 0 dd

结论:

dd测试出的读速度和hdparm

是存在区别的,

通过 bs

选项 设置不通的读写块大小测试(默认512字节,测试使用1M),

可以看出 dd

的测出的速度与读写块的大小有关系,还可能受到系统中有IO读写的进程的影响。

hdparm的测试原理没做深入研究,可能是和dd的测试方法存在差别,需要知道这一点。

整体上看,IO的实际测试速度是受到很多因素影响的,包括读写的方式(随机还是顺序,hdparm和dd测试是都是采用顺序读写)、缓存机制、测试的取样等等。

所以不太可能得到一个确定的值(相同的命令行多次测试也不一样,不过差别要小些),以上的方法中读测试还是推荐使用hdparm。

以上的数据虽然存在偏差,但还是能大体分析出机器的IO性能。只是需要明确,这些测试值是在什么样的环境下获得的。

测试硬盘读写速度软件_Linux 测试 IO 性能(磁盘读写速度)相关推荐

  1. 测试硬盘读写速度软件_Linux测试硬盘读写速度用什么命令

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 了解hdparm命令 Linux上使用hdparm命令查看硬 ...

  2. ios测试硬盘速度软件,MAC测试“读写速度达100MB/s_希捷 Backup Plus Slim for Mac 500GB_移动存储评测-中关村在线...

    说完备份保存,相信大家还记得在前面说过的,这是一款USB3.0移动硬盘.既然支持高速传输,在Macbook Air上面到底有多快呢?笔者从互联网下载了一款免费测试软件AJA KONA System T ...

  3. SATA硬盘性能测试软件,趣味测试:实测SATA线对硬盘性能的影响

    1不同主板附带SATA数据线对比 前言:随着硬盘技术的不断发展,SATAII接口已经逐渐成为了当前主流硬盘的必备接口.而具备热插拔特性.长度可达1米.拥有极小体积且安装和拆卸简单的SATA数据线,也取 ...

  4. 固态硬盘在线测试软件,ssd测试软件,详细教您ssd测试软件

    在刚装好机之后,同样希望测试一下硬盘的读写速度是否符合厂商的标称值.那就使用ssd测试软件吧,它可以检查出固态硬盘的工作时长.总计空间.已用空间.通电次数.是否支持微调.产品型号等信息,可能很多用户还 ...

  5. dd linux 测试写速度,正确的使用dd进行磁盘读写速度测试

    测试方式:使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入8k的数据,总共写入20万次,产生1.6G大小的文件. 测试指令:dd if=/dev/zero of=/data01/test. ...

  6. 过渡期间的测试:外包软件的测试标准(译)

    在信息技术外包世界,对一个公司拥有它的应用程序和被其他人开发或者维护的框架是普遍的.当销售商完成这个生意,一个普通的实验是把测试过渡活动当成是一个整体.你如何设计一个传统实验的可接受标准以至于它可测试 ...

  7. 湖北软件登记测试,第三方软件测评软件登记测试的流程

    第三方软件测评(例如赛辰软件第三方检测单位)软件登记测试的流程: 1)企业准备完整的测试资料. 2)双方工程师对接,并进行检测. 3)我方工程师根据测试过程中的记录生成测试盖章资料,企业确认后打印盖章 ...

  8. 国家普通话水平测试官方手机软件,普通话测试软件 – 免费手机普通话测试软件,用手机模拟测试普通话水平[Android]...

    不管是应聘.交涉还是等级考试,一口流利标准的普通话将是必不可少的一给配备,中国方言众多你是不是改不了自己的家乡口音呢?不妨试试免费的普通话水平测试软件帮助您学习普通话. 普通话测试 是一款专门用来模拟 ...

  9. ios测试硬盘速度软件,轻巧好用的AJA System Test硬盘测速工具(Mac / Windows)

    记得只能型手机尚未盛行的年代,电脑效能跑分几乎是想买PC的一个参考的指标,然而CPU迈向多核发展,运作效能的瓶颈几乎都卡在硬盘的读取效能,SSD的出现让电脑的效能完更上一层楼.目前云端服务的发展以融入 ...

最新文章

  1. 【微信小程序企业级开发教程】快递查询实例
  2. Replicate(网络复制),ActorRole(角色),Ownership(所有权)以及RPC(远程调用)等等...
  3. 文档类CDocument、子框架类CFrameWnd及视图类CView的关系及如何相互调用
  4. 原python基础概念整理_Python从头学之基础概念整理
  5. 11 个简练的 Java 性能调优技巧
  6. target runtime apache v7.0 not defined 的解决方法
  7. A2K课程目录及学习计划
  8. Linux下替换文本内容(sed命令)
  9. 我也是不得不说我的学习能力下降了,这两天都没有完成一个模块
  10. 使用jQuery的load()进行页面模块化加载
  11. SpringBoot在线预览PDF文件
  12. Linux内存管理宏观篇(五)物理内存:页面分配和释放页面
  13. 关于axure 8在发布的时候显示:Unable to connect to Axure Share.的问题
  14. 借助取色工具ColorPix对Pycharm编辑器设定自己喜欢的代码颜色_20161202
  15. 工欲善其事必先利其器-前端实习简历篇
  16. 【学习笔记】monitor
  17. leedcode.21合并两个有序链表
  18. 一阶微分方程的物理意义_微分方程和积分方程有哪些典型的物理意义?实际中哪个更常用?...
  19. 大脑的终极秘密——从狮子也有意识谈起
  20. 浅谈To B与To C的区别

热门文章

  1. UPYUN CDN 高可用架构实践
  2. Nginx配置中的log_format用法梳理(设置详细的日志格式)
  3. Python pip使用国内镜像
  4. Hadoop 2.7集群环境搭建
  5. 为什么MySQL索引要使用 B+树,而不是其它树形结构?
  6. java基础---二维数组方面的一些小编程
  7. leetcode 658. Find K Closest Elements | 658. 找到 K 个最接近的元素(二分查找+双指针)
  8. dart系列之:浏览器中的舞者,用dart发送HTTP请求
  9. linux欢迎信息打印本机ip,Linux shell 登录显示欢迎信息或机器信息(示例代码)
  10. Java 集合时间复杂度