冬瓜头答疑:磁盘阵列内部FC-AL的性能问题

作者:冬瓜头出处:IT专家网2009-08-03 09:59
 

问:

  大多数磁盘阵列都是通过两个控制器后端的端口,组成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的性能问题的更多相关文章

  1. java对象头信息和三种锁的性能对比

    java头的信息分析 首先为什么我要去研究java的对象头呢? 这里截取一张hotspot的源码当中的注释 这张图换成可读的表格如下 |-------------------------------- ...

  2. [ZT]DAS\NAS\IP SAN\FC SAN之区别

    DAS:服务器直接后挂存储设备,最经济的一种结构. NAS:网络上直接挂接的存储设备,其实就是处于以太网上的一台利用NFS.CIFS等网络文件系统的文件共享服务器. SAN是网络上的磁盘,NAS是一个 ...

  3. DB9 公头母头引脚定义及连接、封装

    DB9 公头母头引脚定义及连接.封装 转自:http://blog.csdn.net/yangshuodianzi/article/details/8997478 1.实物及引脚简介 在做开发的时候经 ...

  4. RAID磁盘阵列介绍

    磁盘阵列 RAID介绍 一.简介: 磁盘阵列(Redundant Arrays of Independent Drives,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意. 最初是由加利福尼亚 ...

  5. FC网络学习笔记02 -网络配置方法

    随着新一代飞机的综合化航电系统对通信需求的不断提高,传统的ARINC429.1553B总线的传输速率分别只有100Kbps和1Mbps,其带宽已远远不 论文联盟 http://Www.LWlm.cOm ...

  6. 磁盘阵列RAID

                                                                                  磁盘阵列RAID 年提出的.RAID名为独立 ...

  7. 存储之磁盘阵列RAID

         存储之磁盘阵列RAID RAID是由美国加州大学伯克利分校的D.A. Patterson教授在1988年提出的.RAID名为独立冗余磁盘阵列(RedundantArray of Indepe ...

  8. iSCSI存储系统知识

    一.概述 SCSI 即小型计算机系统接口(Small Computer System Interface:简写:SCSI),一种用于计算机和外部设备之间(硬盘.光驱.软驱.打印机等)系统级接口的独立处 ...

  9. 【转】怎样查出SQLServer的性能瓶颈

    怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...

随机推荐

  1. sap 给集团分配一个逻辑系统

    1.进入事务代码 SALE定义一个新的逻辑系统 2.通过事务代码RZ10 进入之后, 将参数login/no_automatic_user_sapstar 修改为“0”, 然后重启SAP服务生效 3. ...

  2. SAP请求号的传输

    SAP传输目的: SAP传输目的是把开发机中的程序或对象传输到对应的测试机或生成机中,保持各系统的同步性,方便测试和最后的部署! SAP求情号传输的步骤: 1.创建一个请求号 2.用SE10进入如下界 ...

  3. tiny4412SDK 1312B 启动ubuntuDsektop

    1,解压光盘所带文件ubuntu-desktop-sdcard-image-YYYYMMDD.tar.gz , 得到ubuntudesktop-8g.raw 2,先用SD-flash刷写一边B盘ima ...

  4. 5B - 一只小蜜蜂...

    有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数. 其中,蜂房的结构如下所示.  Input 输入数据的第一行是一个整数N,表示测试实例的个数,然 ...

  5. 8P - 钱币兑换问题

    在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. Output 对应每个输入,输出兑换方法数. ...

  6. JTable 查询

    public JTable query(String table) throws SQLException { DefaultTableModel tablemodel = new DefaultTa ...

  7. 找不到或无法加载主类(Could not find or load main class )

    在Linux环境下,写了一个简单的java程序,通过javac编译成class文件,然后用java 运行的时候,报了这个错误, 搜了一下,可能是classpath的问题,所以用echo $CLASSP ...

  8. MySQL 索引 INDEX

    索引用于快速找出在某列中有特定值的行. 不使用索引,MySQL必须从第一条记录开始读完整个表,直到找到相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一 ...

  9. Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块

    一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...

  10. NOIP2017提高组预赛详解

    NOIP2017预赛终于结束了. 普遍反映今年的卷子难度较大,但事实上是这样吗?马上我将为您详细地分析这张试卷,这样你就能知道到底难不难. 对了答案,鄙人考得还是太差了,只有91分. 那么下面我们就一 ...