《信息存储与管理(第二版):数字信息的存储、管理和保护》—— 2.7 磁盘驱动器的性能

简介:

本节书摘来异步社区《信息存储与管理(第二版):数字信息的存储、管理和保护》一书中的第2章,第2.7节,作者:【新加坡】G.Somasundaram ,【美】Alok Shrivastava,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.7 磁盘驱动器的性能

信息存储与管理(第二版):数字信息的存储、管理和保护
磁盘驱动器属机电设备,它决定了存储系统环境的整体性能。本节将讨论影响它性能的各种因素。

2.7.1 磁盘服务时间

磁盘服务时间(Disk Service Time)是指磁盘完成一个I/O请求所花费的时间。影响它的因素有三个:寻道时间、旋转延迟和数据传输速率。

寻道时间
寻道时间(Seek Time,也叫访问时间,Access Time)指的是读写头在盘面上移动(沿着盘面半径方向)进行定位的时间,也就是移动驱动臂将读写头移动到正确的磁道上所需要的时间。寻道时间越短,I/O操作越快。磁盘生产商发布了以下寻道时间的规格。

全程时间(Full Stroke):读写头从最里面的磁道移动到最外面的磁道,跨越整个磁盘宽度的时间。
平均时间(Average):读写头随机地从一个磁道移动到另一个磁道的平均时间,通常指的是全程时间的三分之一。
相邻磁道时间(Track-to-Track):读写头在两个相邻磁道间移动的时间。
上述规格都是以毫秒来度量的。磁盘生产商通常会标明磁盘的寻道时间。现在磁盘的平均寻道时间一般在3~15ms。对于读操作来说,在随机的磁道上读数据与在相邻磁道上读数据相比,寻道时间对前者的影响更为关键。为了减少寻道时间,可以把数据只写到某些柱面上去。这将导致比实际容量更低的有效磁盘容量。例如,如果只用到一个500GB磁盘靠外的前40%柱面,那么它的有效容量只有200GB。这就是所谓的磁盘短击(Short-Stroking)。

旋转延迟
为了存取数据,驱动装置和驱动臂需要将盘面上方的读写头移到特定的磁道,同时盘片旋转,将请求的数据(扇区)移到读写头下面。盘片旋转以定位读写头下方的数据(扇区)所用的时间,称为旋转延迟(Rotational Latency)。延迟时间取决于主轴的转速并以ms来度量。平均旋转延迟是主轴旋转一圈所需时间的二分之一。与寻道时间类似,读写随机选择的扇区与读写相邻扇区相比,旋转延迟对前者的影响更大。

一个转速为5 400rpm的磁盘的平均旋转延迟大约为5.5ms,而转速为15 000rpm(或每秒250转)的磁盘,其平均旋转延迟约为2.0ms。

数据传输速率
数据传输速率(Data Transfer Rate,也叫传输速率,Transfer Rate)指的是每个单位时间内磁盘能够传输到HBA的平均数据量。要计算数据传输速率,首先要明白读写操作的过程。对于读操作,数据首先从盘面移动到读写头,再到磁盘内部的缓冲区,最后才通过接口传输到主机HBA。对于写操作,数据通过磁盘接口从HBA传输到磁盘内部缓冲区,再到读写头,最终从读写头写到盘面上。

读写操作的数据传输速率是以内部和外部传输速率来衡量的,如图2-11所示。

33763952a37b2939dede6d76d7382ef0b0db01c5

内部传输速率(Internal Transfer Rate)指的是数据从一个盘面上的单个磁道传输到内部缓冲区的速率。内部传输速率需要将寻道时间和旋转延迟考虑在内。外部传输速率(External Transfer Rate)指的是数据从接口移动到HBA的速率。通常外部传输速率是接口所宣称的速率,比如ATA的速率是133MB/s。持续的外部传输速率(实际工作时)一般要低于所宣称的接口速率。

2.7.2 磁盘I/O控制器的利用率

磁盘的I/O控制器的利用率对于I/O响应时间的影响很大。要理解如何影响,我们可以将磁盘看作一个黑盒子,包括2个部分。

队列(Queue):用于存放等待I/O控制器处理的I/O请求。
磁盘I/O控制器(Disk I/O Controller):依次处理队列中的I/O请求。
I/O请求以应用程序生成请求的速率到达控制器。这个速率也称作到达速率(Arrival Rate)。这些请求暂存在I/O队列中,将由I/O控制器依次进行处理,如图2-12所示。I/O到达速率、队列长度,还有I/O控制器处理每个请求的时间决定着I/O响应时间。如果控制器一直忙碌或处于高利用率状态,队列规模会较大,反应时间也会较长。

8959c787bdf0a9eb95713346076351b5158c76af

根据磁盘驱动器性能的基本规则,控制器利用率和平均响应时间的关系如下:

平均响应时间(TR)=服务时间(TS)/(1利用率)

其中TS是控制器处理一次I/O所用的时间。

当利用率为达到100%时——也就是I/O控制器饱和时,响应时间接近于无限大。实际上,饱和的部件,或者说瓶颈,迫使I/O请求序列化,这意味着每个I/O请求都必须等待它前面的请求被处理完毕。利用率和响应时间的关系如图2-13所示。

515e85998ca8e0c85eed5ad81c86f2b16bf213a5

该图显示,响应时间随着利用率增加呈非线性的变化。当平均队列长度很短时,响应时间一直很快。当队列负载增加时,响应时间也逐渐地增大。当利用率超过70%时,响应时间呈指数增长。因此,对于性能敏感型应用,常规做法是保证磁盘利用率在70%以下。

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
弹性计算 数据可视化 Ubuntu
云服务器使用docker安装portainer容器可视化管理工具
Portainer 将管理容器的复杂性隐藏在易于使用的 UI 后面,使部署应用程序和解决问题变得如此简单,通过使用界面化来完成容器的部署操作。
2269 1
云服务器使用docker安装portainer容器可视化管理工具
|
4月前
|
存储 消息中间件 监控
【消息队列MQ】消息顺序性:保证方案、适用场景
本文系统解析MQ消息顺序性,涵盖定义、乱序根因、全链路保障方案、适用场景、性能权衡、主流产品对比、典型坑点及最佳实践8大维度。聚焦局部/全局顺序本质差异,强调“发送→存储→消费”全链路一致,并指出90%故障源于消费端乱序。兼顾理论深度与落地可行性,助力高效、可靠选型与实施。
|
8月前
|
小程序 安全 NoSQL
陪玩小程序/代练APP/代打一键发布任务/打手抢单方便快捷
本文介绍游戏陪玩与代练平台搭建方案,涵盖业务定位、源码采购、部署环境及合规要求。建议明确“陪玩社交”或“技术代练”主方向,选择正规渠道获取商业源码,部署4核8G服务器,配置Nginx、MySQL、Redis环境,办理ICP证。运营需集成官方支付、押金托管、内容审核及打手实名认证机制,确保安全合规。
632 0
|
人工智能 关系型数据库 文件存储
DIY nas 之--照片管理工具PhotoPrism
PhotoPrism是一个开源的照片管理工具,是一款由AI驱动的应用程序,主要用于浏览、组织和分享您的照片集。
1186 3
|
11月前
|
机器学习/深度学习 监控 算法
基于YOLOv8的电瓶车/电动车识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于 YOLOv8 和 PyQt5,成功实现了电瓶车/电动车的自动识别系统,包含从模型训练到图形界面部署的完整流程。通过YOLOv8的强大目标检测能力和PyQt5的易用图形界面
|
机器学习/深度学习 人工智能 并行计算
一文了解火爆的DeepSeek R1 | AIGC
DeepSeek R1是由DeepSeek公司推出的一款基于强化学习的开源推理模型,无需依赖监督微调或人工标注数据。它在数学、代码和自然语言推理任务上表现出色,具备低成本、高效率和多语言支持等优势,广泛应用于教育辅导、金融分析等领域。DeepSeek R1通过长链推理、多语言支持和高效部署等功能,显著提升了复杂任务的推理准确性,并且其创新的群体相对策略优化(GRPO)算法进一步提高了训练效率和稳定性。此外,DeepSeek R1的成本低至OpenAI同类产品的3%左右,为用户提供了更高的性价比。
3471 11
|
Serverless API
【MCP教程系列】在阿里云百炼,实现超级简单的MCP服务部署
阿里云百炼推出业界首个全生命周期MCP服务,支持一键在线注册托管。企业可将自研或外部MCP服务部署于阿里云百炼平台,借助FC函数计算能力,免去资源购买与服务部署的复杂流程,快速实现开发。创建MCP服务仅需四步,平台提供预置服务与自定义部署选项,如通过npx安装代码配置Flomo等服务。还可直接在控制台开通预置服务,体验高效便捷的企业级解决方案。
4575 0
|
数据处理 C语言 开发者
Filter函数有哪些的高级用法
`filter()`函数是Python中用于从序列中按条件筛选元素的内置函数。它接受一个函数和一个可迭代对象作为参数,返回一个迭代器,该迭代器包含应用函数后返回`True`的元素。基本语法是`filter(function, iterable)`。可以使用`lambda`表达式简化条件,例如筛选偶数:`filter(lambda x: x % 2 == 0, numbers)`。文章还讨论了使用自定义函数、处理多个条件的情况,并对比了`filter()`与列表推导式的用法。
812 3
|
UED 开发者
【HarmonyOS——ArkTS语言】计算器的实现【合集】
【ArkTS语言-HarmonyOS】计算器的实现【合集】组件,点击等号后计算函数高效解析表达式并给出准确结果,达成核心功能要求。错误提示不够详尽,难以助力用户快速定位输入错误;响应式设计不足,在不同屏幕规格下适配性差。总体而言,本次实验已成功构建起基本功能框架,后续将针对上述问题深入探究优化方案,不断打磨细节,在完善计算器功能与提升用户体验的道路上持续精进,进而提升自身编程与应用开发的综合能力水平。利用按钮组件顺利完成布局设计,数字、运算符及功能按钮排列有序,操作逻辑清晰直观。
845 8
|
人工智能 监控 数据可视化
低代码开发平台,快速搭建云MES系统
低代码平台是一种通过可视化操作减少手工编码的高效开发工具,适用于快速构建和交付应用软件。万界星空科技的AI低代码云MES系统具备快速开发、灵活可扩展、降低维护成本、智能分析与决策等优势,支持生产计划、质检、库存管理、数据大屏、自定义报表等功能,助力企业实现生产过程的数字化和智能化转型,提升运营效率和市场竞争力。
966 4