看了篇文章,突然想写点磁盘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计算的更多相关文章

  1. 磁盘IO

    基本概念: 在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这里就详细记录一下,个人认为对这个概念的熟悉程度也决定了对数据库与存储优化的理解程度,以下这些概念并非权威文档,权威程度肯定就不 ...

  2. 【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

  3. linux查看磁盘io的几种方法

    怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式: 第一种:用 top 命令 中的cpu 信息观察 Top可以看到的cpu信息有: Tasks: 29 total, 1 runnin ...

  4. 磁盘IO的性能指标

    磁盘IO的性能单位: bps (byte/s)   每秒钟 byte 数 kbps = bps / 1024 mbps = kbps / 1024 相关计算可以参考下面代码:  https://git ...

  5. Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集

    实验室最近在做的项目要做ubuntu系统监控,要获得系统的一些信息并返回给web服务器. web服务器与ubuntu主机的通信我写的程序用的是socket,至于为什么不用java程序ssh到对应的主机 ...

  6. Linux下java获取CPU、内存、磁盘IO、网络带宽使用率

    一.CPU 使用proc文件系统,"proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系统内核数据的操作提供接口.用户和应用程序可以通过proc得 ...

  7. Linux按照CPU、内存、磁盘IO、网络性能监测

      系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书 ...

  8. 磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢

    (1) 读写最好还是不要多线程,硬盘读写的速度有限,单线程时已经满负荷了,多线程又会增加线程之间的切换,会增加时间. 如果想增加读写速度,应该增加硬盘,做raid (2)首先是硬盘的写入是串行的,CP ...

  9. inux按照CPU、内存、磁盘IO、网络性能监测

    http://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长 ...

随机推荐

  1. Qt570_CentOS64x64_02

    1.Qt570的简单测试项目,在做"重新构建"的操作的时候,出现1个问题,Qt底下的"编译输出"窗口中的信息为: cc1plus: error: unrecog ...

  2. 《WAP》第一次作业:团队亮相

    一.队名:WAP! 二.团队成员组长 组员 : 201571030302/杜有海 201571030327/乌勒扎 201571030304/郝明宇 201571030318/马麒 组长: 20157 ...

  3. 教你上传代码到码云(与github一样)

    以下所有操作都在命令行进行 1 git 配置 git config --global user.name “用户名” git config --global user.email “邮箱”2 生成公钥 ...

  4. python实现:将文本文件分割成多个小文本文件(php也可实现)

    前两天有个朋友说,想实现一个文本文件按照固定行数进行分割成多个文本文件,却不知如何实现.如果数据量小手动分割下就好了,如果数据量很大的话手动完成实在太耗费人力了,也不现实.那么就需要借助脚本去实现.既 ...

  5. 解决mysql安装报错:无法启动此程序,因为计算机丢失MSVCP120.dll

    问题一: 因为装的是新系统,所以遇到mysql启动报错:无法启动此程序,因为计算机丢失MSVCP120.dll 后来参考这篇文章https://blog.csdn.net/huacode/articl ...

  6. bzoj2330: [SCOI2011]糖果 差分约束系统

    幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候 ...

  7. 一张思维导图教你使用google一下

    导图总览 google搜索技巧.png 双引号 代表完全匹配搜索 也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配 例如搜索"java 排序"与无引号的j ...

  8. java通过文件头来判断文件类型

    import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.ut ...

  9. 【hive】关于用户留存率的计算

    首先用户留存率一般是面向新增用户的概念,是指某一天注册后的几天还是否活跃,是以每天为单位进行计算的.一般收到的需求都是一个时间段内的新增用户的几天留存 (1)找到这个时间段内的新增用户(也可能含有地区 ...

  10. 非ie浏览器必备函数常识

    场景描述: 我们都知道IE浏览器和非IE浏览器都有很多功能一样但写法不同,或者各自都有一些自己独特的方法,那么为了保持兼容性和便于编写,我们可以通过这两个方法给非IE浏览器的对象增加自己没有,但IE有 ...