冬瓜头答疑:磁盘阵列内部FC-AL的性能问题
冬瓜头答疑:磁盘阵列内部FC-AL的性能问题
问:
大多数磁盘阵列都是通过两个控制器后端的端口,组成1/2/4条FC-AL环,来连接所有磁盘。
FC-AL仲裁环的协议规定,同一时刻只有两个设备能传送数据,也就是说,在一条FC-AL环里面,控制器的一个后端端口充当了发起者的角色,环上的一个硬盘充当了目的地的角色,在一个时刻里,后端端口发出数据读写指令,只有一个硬盘能响应这个指令并传输数据。
那是否就意味着,一条FC-AL环的总体性能,取决于一个硬盘的读写性能?15K转速的硬盘,持续读写带宽不到70MB/S,IOPS不到400。那像IBM DS4800、EMC CX-80之类的,总共4条环,后端的性能岂不是只有280MB/S、1600 IOPS?除了以阵列里CACHE来提高速度,我不知道有没有别的办法,或者,磁盘阵列内部采用的不是工业标准的FC-AL?
答:
这个问题非常好,而且也非常经典。要解释这个问题,需要明白三点:
1.FCAL的传输通道的确同一时刻只允许两点间独占通道带宽来传输数据。
2.控制器在有足够IO请求的情况下绝对不会让通道闲着,会充分利用带宽。
3.磁盘的外部传输率和内部传输率。FCAL环路上存在多个设备的时候,由于控制器的轮询策略充分利用带宽,整个系统在外体现为一个永远都在读写数据状态而不是寻道状态的大虚拟设备(《大话存储》第53页也有描述),一旦某个设备需要寻道,那么就让其他设备来传输数据来弥补所浪费的时隙,所以整体系统可以发挥出一个单一设备的内部传输率。
下面是详细总结:
当FCAL环路上存在多个设备的时候,控制器向谋设备发起IO之后,该设备需要一定的寻道时间,而此期间内AL环出于被释放的状态,此时控制器依然可以向另外的设备发起IO,也就类似于先把该做的命令全部下发,待某个设备寻道完成请求将数据返回给控制器的时候,往往是多个设备都出于积攒状态,也就是他们都干完活了,准备交差了,而此时只能排队一个一个来,大家都鼓着劲呢。明白了这一点,我们就往下看。
关于IOPS数值的矛盾:
IOPS与吞吐量是一对矛盾关系。在关注IOPS的环境下,IO SIZE往往比较小,因为只要较小的SIZE才不至于充满带宽达到瓶颈,所以,要达到较高的IOPS,IO SIZE需要比较小。而这种情况下控制器将IO请求发送给设备之后,多个设备出于积攒状态,他们会仲裁从而一个一个的分别得到传输数据的机会,由于IO SIZE很小,所以每次传输数据很快就结束,这样,一个IO就飞快的完成了,而上一个设备的IO完成之后,下一个设备接着也会很快完成,因为他已经出于积攒态,待返回的数据早已在cache中准备发送。
这样的话,这个整体系统对外就表现为一个永远在完成IO而不需要寻道的虚拟设备。而如果AL环上除了控制器之外只有一个设备,那么环路就必须等待它寻道,因为寻道的时隙内,AL环上已经没有其他设备可工作了。
然而,AL环的这种弥补寻道时隙的效果也不是设备越多就越好,不同的设计和产品都有自己不同的最佳设备数量,目前的经验值为64个,也就是环路总容量的一半,超过这个值,性能不会再有提高,甚至有所下降。
我们可以推论出另外一个结论,也就是,慢速设备,比如寻道时间长的设备,越是慢速设备,组成AL环路之后其带来的整体提升越大,越是快速设备,高规格的设备,组成AL环路之后,提升的性能越有限。这就是AL环或者其他共享总线/环方式弥补设备自身处理产生的时隙的效果。
关于吞吐量/带宽值的矛盾:
经过上面的描述,我们已经对共享总线/环传输方式的底层机制以及其效用有了一个很好的理解了。在重视和追求高吞吐量,也就是充分利用带宽的环境下,IO SIZE往往非常大,以至于在较低的IOPS值下就已经可以吃满通道带宽了。
往往这种情况下,上层所发出的IO都是连续大块的IO,以至于AL环之上的设备寻道时间可以大大降低,这就使得设备更快的出于积攒态,准备向外发送数据。我们知道磁盘外部传输率由于磁盘内部不断换道被打断,致使其数值较内部传输率降低了大约20倍。而AL环的效用就是弥补寻道所浪费的时隙,所以整体系统的外部吞吐量,就被提升了上来,从而解决了这个矛盾。
冬瓜头答疑:磁盘阵列内部FC-AL的性能问题的更多相关文章
- java对象头信息和三种锁的性能对比
java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 |-------------------------------- ...
- [ZT]DAS\NAS\IP SAN\FC SAN之区别
DAS:服务器直接后挂存储设备,最经济的一种结构. NAS:网络上直接挂接的存储设备,其实就是处于以太网上的一台利用NFS.CIFS等网络文件系统的文件共享服务器. SAN是网络上的磁盘,NAS是一个 ...
- DB9 公头母头引脚定义及连接、封装
DB9 公头母头引脚定义及连接.封装 转自:http://blog.csdn.net/yangshuodianzi/article/details/8997478 1.实物及引脚简介 在做开发的时候经 ...
- RAID磁盘阵列介绍
磁盘阵列 RAID介绍 一.简介: 磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 最初是由加利福尼亚 ...
- FC网络学习笔记02 -网络配置方法
随着新一代飞机的综合化航电系统对通信需求的不断提高,传统的ARINC429.1553B总线的传输速率分别只有100Kbps和1Mbps,其带宽已远远不 论文联盟 http://Www.LWlm.cOm ...
- 磁盘阵列RAID
磁盘阵列RAID 年提出的.RAID名为独立 ...
- 存储之磁盘阵列RAID
存储之磁盘阵列RAID RAID是由美国加州大学伯克利分校的D.A. Patterson教授在1988年提出的.RAID名为独立冗余磁盘阵列(RedundantArray of Indepe ...
- iSCSI存储系统知识
一.概述 SCSI 即小型计算机系统接口(Small Computer System Interface:简写:SCSI),一种用于计算机和外部设备之间(硬盘.光驱.软驱.打印机等)系统级接口的独立处 ...
- 【转】怎样查出SQLServer的性能瓶颈
怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...
随机推荐
- opencv 学习总结 方法总结
师者传道受业解惑也,图片识别是门学科,需要师者传教,才会较快解开谜团,解开困惑,没人引导,要学会图片识别,有点难度,因为其中的做法超出自己的想象范围. 大家都知道,在超出想象范围,或者从未想到的方式, ...
- C# 使用printDocument1.Print打印时不显示 正在打印对话框
C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController PrintController printControll ...
- iOS.mach_absolute_time
1. Technical Q&A QA1398 Mach Absolute Time Units https://developer.apple.com/library/mac/qa/qa13 ...
- button获取验证码60秒倒计时 直接用
__block ; __block UIButton *verifybutton = _GetverificationBtn; verifybutton.enabled = NO; dispatch_ ...
- 20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结
20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 在这次项目的完成过程中刘辰同学付出了很多,在代码的实践上完成的很出色,在技 ...
- Collection和Collections的区别是什么
1)java.util.Collection是一个集合顶层接口,该接口的设计目的是为各种具体的集合提供最大化的统一的操作方式,它提供了对集合对象进行基本操作的通用接口方法,实现该接口的类主要有List ...
- mybatis 插入数据并返回主键值
<insert id="insert" parameterType="com.pojo.TSubject" useGeneratedKeys=" ...
- jdk8 tomcat7
今天想使用jdk8+tomcat7来个写程序,但是一运行始终提示连接不到数据库 提示:Could not obtain connection metadata org.apache.tomcat.db ...
- 获取JavaScript异步函数的返回值
今天研究一个小问题: 怎么拿到JavaScript异步函数的返回值? 1.错误尝试 当年未入行时,我的最初尝试: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <s ...
- rowspan和colspan的区别粗解
rowspan和colspan是我们初学HTML表格中会在做一些特殊表格中遇到.其常在td中添加. rowspan的作用是指定纵向所跨越单元格的行数. 如下效果. colspan的作用是指定单元格横向 ...