磁盘IO计算
看了篇文章,突然想写点磁盘IO的东西,也算是对磁盘的一点点总结。
以下以理论为主,辅助结合实际情况。不明白这句话的出去。
今年是2018年,目前市场上早已经没有国产的硬盘,以前的长城、易拓早早的被拍死在沙滩上,话说硬盘的制造难度仅次于CPU。现在好多厂商也被不断的兼并收购也是因为垂直磁记录这道题太难了,不会做。
下面上图看看磁盘技术

现在市面上的磁盘安装转速来说有5400、7200、10000、15000转/分,这里只讨论3.5英寸的硬盘。
IOPS和带宽是硬盘的主要参数之一,那这些硬盘的IOPS和带宽都是多少呢?我们不考虑实际情况的计算一下:
IOPS(IO per second)是硬盘最重要的参数之一,存储系统一直在优化的一个参数。那么不同的硬盘IOPS是多少?怎么计算呢?
先写结果
RPM的硬盘IOPS=
RPM的硬盘IOPS=80
RPM的硬盘IOPS=147
RPM的硬盘IOPS=199
*以上数据为理论计算值,理论很丰满,现实很骨感。
如何计算的呢?我们以10000 RPM的硬盘为例进行说明
磁盘在接收到一个IO请求的时候需要3步来完成:
1.将磁头转到相应的磁道=寻址时间
我们没有计算寻址时间的方法,只有原厂商提供的数据,HGST的HUC101890CS420x提供了Seek time约为3.8ms
2.等待相应的扇区转到磁头下方开始读取=潜伏时间latency time。
最好的情况是磁头转到相应的磁道,扇区正好在转到磁头下方,此时旋转延时最小为0ms
最差的情况是磁头转到相应的磁道,扇区刚转过磁头下方,此时旋转延时最大,为60000ms/10000转=6ms
两者取平均值为3ms
3.数据传送时间
1个4k的文件所需的数据传输时间=4K / 数据传输率
我们参考原厂商的HUC101890CS420x硬盘的数据传输率Sustained transfer rate (MB/s, typical)为146 to 247,在这里我们取200MB/s
则得出4k文件的传输时间=4k / 200MB/s=0.02ms
经过3步之后,数据就真正的写在了硬盘上,那所花费的时间=3.8ms+3ms+0.02ms=6.82ms
硬盘操作一个IO需要6.82ms,那么1s的时间能够操作的IO=1s/6.82ms=146.7次,所以我们10000RPM的硬盘IOPS即为147
同理可得以下计算过程:
7200转硬盘我选取HUS726TxTAL42yz,此硬盘寻址时间seek time为8.3ms
数据传输率为up to 233,按照200MB/s算吧
IOPS=1s / [ 8.3ms+(60000/7200/2)ms+0.02ms ]=1s / 12.49ms = 80
15000转的硬盘我选取HUC156060CS420x,此硬盘的寻址时间seek time为3ms
数据传输率为189-271,按照200MB/s算吧
IOPS=1s / [ 3ms+(60000/15000/2)ms+0.02ms ]=1s / 5.02ms = 199
*本文中硬盘HUC101890CS420x的参考数据来源:http://www.hgst.com/sites/default/files/resources/USC10K1800_ds.pdf
磁盘IO计算的更多相关文章
- 磁盘IO
基本概念: 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下,个人认为对这个概念的熟悉程度也决定了对数据库与存储优化的理解程度,以下这些概念并非权威文档,权威程度肯定就不 ...
- 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖
系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...
- linux查看磁盘io的几种方法
怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式: 第一种:用 top 命令 中的cpu 信息观察 Top可以看到的cpu信息有: Tasks: 29 total, 1 runnin ...
- 磁盘IO的性能指标
磁盘IO的性能单位: bps (byte/s) 每秒钟 byte 数 kbps = bps / 1024 mbps = kbps / 1024 相关计算可以参考下面代码: https://git ...
- Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集
实验室最近在做的项目要做ubuntu系统监控,要获得系统的一些信息并返回给web服务器. web服务器与ubuntu主机的通信我写的程序用的是socket,至于为什么不用java程序ssh到对应的主机 ...
- Linux下java获取CPU、内存、磁盘IO、网络带宽使用率
一.CPU 使用proc文件系统,"proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序可以通过proc得 ...
- Linux按照CPU、内存、磁盘IO、网络性能监测
系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书 ...
- 磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢
(1) 读写最好还是不要多线程,硬盘读写的速度有限,单线程时已经满负荷了,多线程又会增加线程之间的切换,会增加时间. 如果想增加读写速度,应该增加硬盘,做raid (2)首先是硬盘的写入是串行的,CP ...
- inux按照CPU、内存、磁盘IO、网络性能监测
http://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长 ...
随机推荐
- django 常用字段类型
<> CharField #字符串字段, 用于较短的字符串. #CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数 ...
- Factory Method(工厂方法)
Factory Method(工厂方法) 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使一个类的实例化延迟到其子类. 适用性: 当一个类不知道它所必须创 ...
- qt 数据库操作总结
#include <QtSql>QT += sql QSqlDatabase类实现了数据库连接的操作QSqlQuery类用来执行SQL语句QSqlRecord类 封装数据库所有记录 第一: ...
- HDU1166 敌兵布阵_线段树
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- UVA-1572 Self-Assembly (图+拓扑排序)
题目大意:每条边上都有标号的正方形,两个正方形能通过相匹配的边连接起来,每种正方形都有无限多个.问能否无限延展下去. 题目分析:将边视为点,正方形视为边,建立无向图,利用拓扑排序判断是图否为DAG. ...
- mysql中limit的用法详解[数据分页常用]
在我们使用查询语句的时候,经常要返回前几条或者中间某几行的数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT [offset ...
- jQuery实现鼠标划过展示大图的方法
这篇文章主要介绍了jQuery实现鼠标划过展示大图的方法,实例分析了jQuery操作鼠标事件及图片处理的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jQuery实现鼠标划过展示大图 ...
- Delphi 简体 繁体 转换
http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=104986 試看看 這個是豬寶寶從網路上抄來的 檢視純文字版列印? fun ...
- 5.3 将users表添加到xadmin后台
在users模块中添加adminx.py文件,是xadmin后台管理默认的文件名,内容是: from .models import EmailVerifyRecord, Banner import x ...
- js实现trim()方法
在面向对象编程里面去除字符串左右空格是很容易的事,可以使用trim().ltrim() 或 rtrim(),在jquery里面使用$.trim()也可以轻松的实现.但是在js中却没有这个方法.下面的实 ...