`

硬盘原理与IO吞吐量计算

阅读更多

盘面

硬盘的盘片一般用铝合金材料做基片,高速硬盘也可能用玻璃做基片。硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都会利 用,都可以存储数据,成为有效盘片,也有极个别的硬盘盘面数为单数。每一个这样的有效盘面都有一个盘面号,按顺序从上至下从“0”开始依次编号。在硬盘系 统中,盘面号又叫磁头号,因为每一个有效盘面都有一个对应的读写磁头。

磁道

磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道从外向内从0开始顺序编号。硬盘的每一个盘面有300~1 024个磁道,新式大容量硬盘每面的磁道数更多。信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据,而是被划分成一段段的圆弧,这些圆弧 的角速度一样。由于径向长度不一样。

所以,线速度也不一样,外圈的线速度较内圈的线速度大,即同样的转速下,外圈在同样时间段里,划过的圆弧长度要比内圈划过的圆弧长度大。每段圆弧叫做一个扇区 ,扇区从“1”开始编号,每个扇区中的数据作为一个单元同时读出或写入。一个标准的3。5寸硬盘盘面通常有几百到几千条磁道。磁道是“看”不见的,只是盘面上以特殊形式磁化了的一些磁化区,在磁盘格式化时就已规划完毕。

柱面

所有盘面上的同一磁道构成一个圆柱,通常称做柱面(Cylinder),每个圆柱上的磁头由上而下从“0”开始编号。数据的读/写按柱面进行,即磁 头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头 才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。

电子切换相当快,比在机械上磁头向邻近磁道移动快得多,所以,数据 的读/写按柱面进行,而不按盘面进行。也就是说,一个磁道写满数据后,就在同一柱面的下一个盘面来写,一个柱面写满后,才移到下一个扇区开始写数据。读数 据也按照这种方式进行,这样就提高了硬盘 的读/写效率。

一块硬盘驱动 器的圆柱数(或每个盘面的磁道数)既取决于每条磁道的宽窄(同样,也与磁头的大小有关),也取决于定位机构所决定的磁道间步距的大小。

 

硬盘容量计算: 磁头数 * 每盘面磁道数 * 每磁道扇区数 * 每扇区字节数(512B)

 

硬盘性能参数与高效IO

  • 转速:当前的服务器硬盘一般都是15000转/分钟
  • 平均延时:平均延时就是磁道上的那段数据转到磁头下面需要的时间,这直接由转速决定。比如15000转/分钟的硬盘,也就是每秒250转,每转一圈需要4毫秒,因此平均延时就是转半圈的时间,等于2毫秒。
  • 平均寻道时间:服务器硬盘一般平均寻道时间是4毫秒。
  • 持续传输速率:服务器硬盘一般在80M每秒,也就是80K每毫秒(为了方便计算,单位都用毫秒)。


因此读取一次数据需要的时间等于:定位时间(平均延时2ms+寻道4ms)+数据传送时间(要读的数据/80k*ms)

IO大小
定位时间(毫秒)
传送时间(毫秒)
数据传输效率
(传送时间/总时间)
8K
6
0.1
1.6%
128K
6
1.6
21%
512K
6
6.4
52%
1M
6
12.8
68%
2M
6
25.6
81%

准则:数据传送时间 > 5*定位时间;换句话说就是: 数据传输效率大于80% ,否则大部分时间都用在“寻道定位”上显然是不合算的。
(我们回想一下十年前的硬盘技术:容量大约是1.2GB;转速大约在5400转/分钟;持续传输速率大约在10M每秒;平均寻道时间大约在15毫秒。)
    硬盘的技术进步带给持续传输速率好处要远大于平均寻道时间的好处,因此差不多越高级的硬盘“IO大小”要设定的越大才好。


RAID 0,或者RAID 10的stripe size计算公式:

RAID的技术介绍:

  • stripe width(条带宽度):RAID中的磁盘数,就是组成这个stripe的磁盘数。如,4个磁盘组成的RAID 0,条带宽度就是4。
  • stripe depth(条带深度):单块磁盘上条带的大小,有时也称为stripe unit。
  • stripe size(条带大小):stripe depth*stripe width。
  • 还有一种说法:有时也称为block size块大小 , chunk size簇大小 , stripe length条带长度, granularity粒度, 单块磁盘上的每次IO的最小单位。


RAID条带大小的另一个计算公式为:(参见:Oracle and RAID Usage

条带大小 = (0.25*平均定位时间*数据传输速率*(并发用户数-1)*1.024)+0.5K

平均定位时间=(平均延时+平均寻道时间)  (milliseconds);数据传输速率单位为:Megabyte/sec;1.024 = 1s/1000ms*1024K/1M (单位转换因子)

举例来说,磁盘寻道时间是6ms,传输速率80MB,且有20个并发用户的条带大小应该为:

(0.25*6*80*19*1.024)+0.5=2335.22K(差不多2M)

分享到:
评论

相关推荐

    Linux操作系统IO机制原理(流程图详解).pdf

    在内核的更高层次上,IO调度器(如CFQ,Deadline,NOOP等)负责管理对块设备的请求,优化了数据块的读写顺序,减少磁盘寻道时间,进一步提高了数据处理的效率和系统的吞吐量。 了解Linux操作系统的IO机制原理,对于...

    计算机组成原理教学课件:6-Storage and Other IO Topic.ppt

    性能可以由吞吐量(在一定时间内传输的数据量)、响应时间和I/O延迟等指标来衡量。 6.8节讨论了如何设计I/O系统。设计过程中需要考虑如何优化数据路径,减少延迟,同时保证系统的弹性。 最后,6.9节介绍了并行性和...

    io.benchmark,.zip

    1. 吞吐量:衡量单位时间内系统处理的IO操作数量,通常以每秒读写次数(IOPS)或者数据传输速率(MB/s)来表示。 2. 延迟:从发起IO请求到完成IO操作所需的时间,低延迟意味着更快的响应速度。 3. 并发性:系统同时...

    scalable-io-in-java-中文.pdf

    5. **分而治之**:在可伸缩性设计中,将问题分解为多个小任务,并为每个任务安排非阻塞操作,可以提高系统的吞吐量和效率。 6. **事件驱动设计的优势与挑战**: - **优势**:比其他模型更高效,需要的资源更少,...

    存储器和IO设备1

    吞吐量是指在一定时间内设备能够传输的数据量,它与带宽直接相关。带宽是设备在单位时间内能处理的最大数据量。另一方面,响应时间是指从发出I/O请求到数据实际被处理完成所需的时间,这通常由寻道时间、旋转延迟和...

    windows-Disk-IO.rar_disk io_windows 磁盘_磁盘

    - **吞吐量**: 单位时间内处理的I/O操作数量。 5. **磁盘I/O监控工具** - **资源监视器**: Windows内置工具,可实时查看磁盘读写速度、队列深度等信息。 - **PerfMon(性能监视器)**: 提供更详细的性能计数器,...

    2021-2022计算机二级等级考试试题及答案No.17246.docx

    26. **UDP协议**:UDP(User Datagram Protocol)是无连接的协议,不保证数据完整性,但提供较低的延迟和较高的吞吐量。 27. **应用程序删除**:直接删除应用程序可能会导致数据丢失,应使用卸载程序或系统自带的...

    iometer-2008-06-22-rc2.win.x86_64.zip

    - **实时监控**:在测试过程中,Iometer能实时显示性能指标,如IOPS(每秒输入/输出操作次数)、吞吐量、延迟等。 - **报告生成**:测试完成后,Iometer能生成详细的测试报告,便于分析和比较。 3. **工作原理** ...

    云计算平台分布式存储解决方案.pdf

    2) 高IO性能:随着云计算平台应用的多样化和复杂化,存储系统需要提供超高的IOPS和吞吐量,以及低IO访问延迟,确保云平台在扩展后仍能保持高效运行。 3) 高度可用性与可靠性:为了保障云计算平台中所有应用系统及...

    淘宝嘉年华分布式资料共享

    通过将频繁访问的数据缓存在SSD上,减少了对传统硬盘的访问频率,从而降低了延迟并提高了吞吐量。 ##### 4.2 元数据开销 - 在内存中的元数据开销为24字节(300GB/4KB, 1.8GB),而在SSD上的元数据开销则为16字节。 - ...

    Linux Driver Development

    **多队列支持**:为了提高吞吐量和降低延迟,现代网络设备驱动程序通常支持多队列技术,可以将网络流量分散到多个CPU上处理。 #### USB设备驱动 USB(通用串行总线)是一种广泛使用的标准接口,用于连接各种外围...

    磁盘调度算法(C语言)

    - **性能指标计算**:计算并输出平均寻道时间、平均等待时间和吞吐量等性能指标。 在编写代码时,要注意效率,尽可能减少不必要的排序和查找操作。同时,为了便于测试和分析,可以提供用户输入不同场景的接口,或者...

    计组总结1

    计算机组成原理是理解计算机系统运行基础的关键领域,涵盖了硬件与软件的交互以及数据处理的方式。以下是对提供的信息的详细解析: 1. **冯诺依曼模型**:这是现代计算机的基本设计模型,它包括五大组成部分:控制...

    C++-多线程编程总结-实例讲解.doc

    C++的多线程编程是提高程序效率的关键技术之一,特别是在需要高吞吐量、并发性和实时性的场景中。在C++中实现多线程,我们可以利用标准库中的`<thread>`头文件以及相关的同步机制,如互斥锁、条件变量等。 1. **...

    IOZONE_Windows

    IOZONE的工作原理主要基于对磁盘进行模拟的大量读写操作,通过记录这些操作的完成时间、吞吐量等指标,计算出磁盘的IOPS(每秒输入/输出操作次数)和MB/s(每秒传输速率)。同时,IOZONE支持自定义测试参数,如文件...

    性能极限漂移特技,只有头发少的人才知道.docx

    提升Web项目的吞吐量可以从多个方面入手,以下是一些简单有效的优化措施: 1. **优化前端资源加载**:如合并CSS、JavaScript文件,使用HTTP/2协议等。 2. **利用缓存技术**:合理设置HTTP缓存策略,减轻服务器负担...

    Linux进程、线程和调度(3)

    CPU消耗型进程在运行过程中大部分时间都处在CPU运算状态,而IO消耗型进程则因为IO操作(如读写硬盘)频繁而受到IO速度的限制,导致CPU利用率低。调度器需要合理分配资源,以达到系统资源利用和性能之间的最优平衡。 ...

Global site tag (gtag.js) - Google Analytics