浅析I/O处理过程与存储性能的关系

浅析I/O处理过程与存储性能的关系

https://community.emc.com/docs/DOC-28653

性能”这个词可以说伴随着整个IT行业的发展,每次新的技术出现,从硬件到软件大多数情况下都围绕着性能提升而展开。“摩尔定理”指出CPU的处理速度每18个月会翻一番,但是进入21世纪的第二个十年来,似乎它的速度慢了下来。但是IT行业的各个行业领导者们,还是不断在计算机的性能寻求突破,继续挑战物理极限。细看存储行业,每款新的存储产品的推出,也围绕着如何更快、更好的服务前端服务器的I/O请求为中心。本文从I/O(Block)的流向介绍,试图解读整个I/O流与存储性能之间的些许联系。本文作为一篇存储基础的介绍文章,帮助读者了解看似简单的数据读写中的更多细节。

更多信息

存储I/O流与存储性能:

存储I/O(后文简称I/O)的处理过程就是计算机在存储器上读取数据和写入数据的过程。这种存储器可以是非持久性存储(RAM),也可以是类似硬盘的持久性存储。一个完整的I/O可以理解为一个数据单元完成从发起端到接收端的双向的过程。在企业级的存储环境中,在这个过程会经过多个节点,而每个节点中都会使用不同的数据传输协议。一个完整的I/O在每个不同节点间的传输,可能会被拆分成多个I/O,然后从一个节点传输到另外一个节点,最后再经历相同的过程返回源端。

下图演示了一个文件在经过整个I/O路径中每个节点所进行的变化(以EMC Symmetrix存储阵列为例):

整个I/O流经历一下几个节点:

  • File System – 文件系统会根据文件与Block的映射关系,通过File System Manager将文件划分为多个Block,请求发送给HBA。
  • HBA – HBA执行对这一系列的更小的工作单元进行操作,将这部分I/O转换为Fibre Channel协议,包装成不超过2KB的Frame传输到下一个连接节点FC Switch。
  • FC Switch – FC Switch会通过FC Fabric网络将这些Frame发送到存储系统的前端口(Front Adapter)。
  • Storage FA – 存储前端口会将这些FC 的Frame重新封装成和HBA初始发送I/O一致,然后FA会将数据传输到阵列缓存(Storage Array Cache)
  • Storage Array Cache – 阵列缓存处理I/O通常有两种情况:1.直接返回数据已经写入的讯号给HBA,这种叫作回写,也是大多数存储阵列处理的方式。2. 数据写入缓存然后再刷新到物理磁盘,叫做写透。I/O存放在缓存中以后,交由后端控制器(Disk Adapter)继续处理,完成后再返回数据已经写入的讯号给HBA。
  • Disk Adapter – 上述两种方式,最后都会将I/O最后写入到物理磁盘中。这个过程由后端Disk Adapter控制,根据后端物理磁盘的RAID级别的不同,一个I/O会变成两个或者多个实际的I/O。

根据上述的I/O流向的来看,一个完整的I/O传输,经过的会消耗时间的节点可以概括为以下几个:

  • CPU – RAM, 完成主机文件系统到HBA的操作。
  • HBA – FA,完成在光纤网络中的传输过程。
  • FA – Cache,存储前端卡将数据写入到缓存的时间。
  • DA – Drive,存储后端卡将数据从缓存写入到物理磁盘的时间。

下面的表中根据不同阶段的数据访问时间做了一个比较,一个8KB的I/O完成整个I/O流向的大概耗时。(表中的耗时根据每秒的传输数据整除获得,例如HBA到FA的速度有102,400KB/秒除以8KB得到78 μs)。根据表中的数据显而易见,I/O从主机的文件系统开始传输到存储阵列的缓存在整个这个I/O占比很小,由于机械硬盘的限制,最大的耗时还是在DA到物理磁盘的时间。如果使用闪存盘,那这个数据会大幅缩小,但是与其他几个节点的传输时间相比,占比还是比较大的。


8KB I/O的传输


耗时(单位:μs)


扩大1,000,000耗时


CPU到RAM的传输,166MHz 64位总线


6 μs


6 sec


HBA到FA,100MB/秒速率


78 μs


1 min 18 sec


FA到Cache(Symmetrix DMX Director 2.5GHz)


26 μs


26 sec


DA到物理磁盘,73GB 15,000   rpm, Seek 3.6ms,latency 2.0ms


5,700 μs


1 hr 35 min

可以看到,存储阵列的缓存在整个I/O流中所起到的作用是至关重要。缓存的处理效率与大小,直接影响到I/O处理的速度。而然,在实际的环境中,即使存储阵列的缓存工作得当,主机的I/O也不会达到100 μs也就是0.1ms的水平,通常在1-3ms左右,就会认为I/O处理处于比较高性能的模式。原因就是因为另外两个因素“数据头处理”和“并发”。

1. “数据头处理“由于I/O流中每个I/O的数据组成并不是只包含数据,如下图所示,一个I/O除了数据以外还包含了Negotiation,Acknowledgement用来负责在I/O流中的每个节点传输和进行管理的。其中包含和TCP/IP一样的“Handshaking“信息以及流控制的信息,比如初始化传输,结束通讯等等。Header中则会定义一些例如CRC校验的信息,保证数据的一致性。所有这些数据的处理都会耗费一定的处理资源,增加I/O流的耗时。

2.“并发“。由于I/O流整个过程中不可能只同时处理一个I/O,所有的I/O在HBA,FC,FA和DA处理的过程中都是已大量并发的情况下进行。而主要的耗时取决于I/O队列的等待,虽然存储阵列会在并发上进行优化。同一个处理Slice的处理还是会一队列形式进行。入下图所示,当存储同时面对多个I/O的处理的情况,总会有某个I/O会在整个流的最后出来,而增加I/O的耗时。所以说,在I/O流的每个节点出现瓶颈,或者短板的时候。I/O的耗时就会增加。

综上所述,I/O流与存储性能的关系可以总结为以下几点:

  • 完成一个I/O流主要经历过的节点有HBA,FC网络,存储前端口FA,存储缓存、存储后端口,物理磁盘。而很个过程中最耗时的是物理磁盘。
  • 存储阵列的缓存的大小和处理方式直接影响到I/O流的性能,也是定义一个存储阵列优劣的重要指标之一。
  • I/O的处理速度通常会远离理论值,原因多个并发量较大而造成的队列延迟。
  • 优化I/O的方式可以从多个节点入手,而最显著的效果是提升物理磁盘的速度。因为存储阵列会把尽可能多的数据放入缓存,而当缓存用满以后的数据交换则完全取决于物理磁盘的速度。
  • 适当选用合适的RAID级别,因为不同的RAID级别的读写比例大不相同,可能使得物理磁盘处理耗时几倍增加。参考:浅谈RAID写惩罚(Write Penalty)与IOPS计算
时间: 2024-08-28 09:14:11

浅析I/O处理过程与存储性能的关系的相关文章

软件对存储性能的影响​

存储系统的核心是软件,在磁盘存储时代,存储系统软件设计的好坏似乎对性能的影响并不是很大,很多存储软件的设计并不会去考虑计算机的体系架构,也不用去关心操作系统调度.内存拷贝等因素带来的性能影响.对于磁盘存储,事情的确是这样的,原因在于磁盘的性能远远低于CPU处理和访存性能.磁盘存储的性能瓶颈点就在于磁盘本身,因此过多的体系结构级别.竞争资源同步的优化,不会对存储性能带来显著优化. 在很久以前做过这方面的实践,当时觉得临界区的资源竞争会对IO性能造成影响,因此,对我们做的一套存储虚拟化系统进行锁资源

性能优化——存储性能优化

核心知识点: 存储性能优化无非从磁盘类型.数据结构以及存储备份方式来进行,根据业务场景选择最合适的方案. 1.机械vsSSD(磁盘类型) a.机械:由于每次访问数据,都需要移动磁头臂,因此连续访问和随机访问性能差别比较大.快速顺序读写.慢速随机读写 b.SSD:使用硅晶体存储数据,因此像内存一样随机访问,功耗和噪音也比较小,但是可靠性和性价比有待提高. 2.B+树 vs LSM树(数据结构) a.为了优化磁盘的随机读写能力,文件系统或数据库系统会先将数据排序,保证数据更新.插入.删除之后依然有序

[转帖]深度: NVMe SSD存储性能有哪些影响因素?

深度: NVMe SSD存储性能有哪些影响因素? http://www.itpub.net/2019/07/17/2434/ 之前有一个误解 不明白NVME 到底如何在队列深度大的情况下来提高性能, 现在看来是因为 比AHCI多了 多队列的控制来提高性能. 导读: NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程.本文从NVMe SSD的性能影响因素进行分析,并给出

ArrayList,Vector,LinkedList的存储性能和特征

ArrayListh和Vector都是采用数组的方式来存储数据,其中ArrayList是线程不安全的,Vector是线程安全,所以ArrayList的性能要比Vector的性能好一些,而LinkedList采用的双向链表来实现数据的存储,而且是线程不安全的,而且LinkedList提供了一些方法,使得LinkedList可以被当做栈和队列来使用.因为ArrayList和Vector采用的数组的方式来实现存储数据,所以查询数据比较快捷,但是进行数据增删操作比较慢些,但是LinkedList采用的事

IBM DS存储存储性能调优

ibm存储适用,其他存储有类似参数. 1.调整全局cache参数 1.1 start and stop cache flush:这两个参数影响控制器处理cache区域的操作,在这中情况下是按照先进先出的原则往磁盘上写数据.这只对打开了写cache的情况下适用. 在一般的情况下,在决大多数时候start的值大于stop的值.但是也有少量的情况下start等于stop的值.如start=stop=80%意味着,控制器的cache将不允许超过80%的部分用于写cache操作,在这种情况下,控制会尽可能

android系统手机存储性能优化

一.存储性能增强之:路在何方? 二.存储性能增强之:emmc标准演进优化存储性能 三.存储性能增强之:wrapfs代替fuse,优化内置sdcard性能 四.存储性能增强之:f2fs代替ext4,优化data用户空间性能 五.存储性能增强之:新型io调度机制ROW 仅以此文总结2014年在存储性能方面的优化,及作为未来优化方向的指引!

存储性能优化方向整理

0概述 0.1 存储性能优化指标 io速率:速率提升数值和百分比 iops:iops提升数值和百分比 0.2 优化方向概述 块存储优化方向:优化的工作,基本上都是在底层,上层只是一些配置. 这些底层的技术适用于ceph块设备,主要是ceph还有自身的一些配置.缓存方案可以拿过来用,在最后补充一下. 底层包括qemu/kvm/kernel三个层面,kernel又主要是filesystem.scsi和block这部分和存储关系最大,也是存储系统由上而下的三部分.我认为如果优化的话,主要工作在这几个方

使用 esxtop 识别存储性能问题

可以使用交互式 esxtop 实用程序提供连接到 VMware ESX 主机的各种设备的 I/O 衡量指标. 使用 esxtop 配置监控 要监控每个 HBA 的存储性能,请执行以下操作: 通过在命令行键入 esxtop 启动 esxtop. 按 d 切换到磁盘视图(HBA 模式). 按 f 修改显示的字段. 要查看整个设备名称,请按 SHIFT + L,然后在“更改名称字段大小”中输入 36. 按 b.c.d.e.h 和 j 切换字段,然后按 Enter. 依次按 s.2 将更新时间更改为每

块存储性能

性能指标 衡量块存储产品的性能指标主要包括:IOPS.吞吐量和访问时延. IOPS IOPS是Input/Output Operations per Second,即每秒能处理的I/O个数,用于表示块存储处理读写(输出/输入)的能力.如果要部署事务密集型应用,典型场景比如数据库类业务应用,需要关注IOPS性能. 最普遍的IOPS性能指标是顺序操作和随机操作,如下表所示.   IOPS性能指标 描述 总 IOPS 每秒执行的I/O操作总次数. 随机读IOPS 每秒执行的随机读I/O操作的平均次数