冬瓜头答疑:磁盘阵列内部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. 在Eclipse中安装python插件的方法

    一个博士给了我一堆代码,原本以为是C++或者java写的,结果是python,我压根没学过呀,不过本着语言都是相通的原则,我硬着头皮开始学习Python,当然先学习安装IDE(以前学习一门新语言,我会 ...

  2. Oracle_SQL(6) 单行函数

    一.单行函数1.定义:对表或视图的查询时,针对每行记录返回一个值的函数.2.用途:用于select语句,where条件3.分类: 数值函数 Number Functions 字符函数(返回字符) Ch ...

  3. 解决IDEA 配置搞坏的问题

    如果我们把IDEA的配置给搞坏了,或者想重新配置,恢复到默认配置. 1.打开如下的目录(不同用户名目录有差异),如下所示: 2.删除掉config 和 system 目录,重新启动 IDEA会自动生成 ...

  4. 简单使用limma做差异分析

    简单使用limma做差异分析 Posted: 五月 12, 2017  Under: Transcriptomics  By Kai  no Comments 首先需要说明的是,limma是一个非常全 ...

  5. Codeforces 767B. The Queue 模拟题

    B. The Queue time limit per test:1 second memory limit per test:256 megabytes input:standard input o ...

  6. Mockplus3.5.0.1新增标注功能

    Mockplus3.5.0.1版本中,新增了标注功能.多种标注模式,智能生成,随时查看.原型设计效率更高. Mockplus的标注功能有以下四种模式: 1.无选中标注 在未选中任何组件时,按住Ctrl ...

  7. 社交类APP原型模板分享——QQ

    QQ是一款社交类的APP应用——聊天软件,支持多人群聊以及丰富有趣的娱乐功能. 此模板交互效果很丰富,主要有抽屉侧拉效果,滚动内容界面.标签组切换.选择组件触发按钮状态变化.点击下拉展开列表.点击弹出 ...

  8. Django web project

    在virtualenv下 (myvenv) ~/djangogirls$ django-admin startproject mysite . 生成web 工程目录 djangogirls ├───m ...

  9. Ajax在jQuery中的应用 (4)向jsp提交表单数据

    ajax技术带给我们的是良好的用户体验,同时,使用jquery可以简化开发,提高工作效率. 下面就介绍一下大致的开发步骤. 工具/原料 本文中使用的是 jquery-1.3.2.min.js 方法/步 ...

  10. mybatis学习 九 代理开发

    1.作用: 实现创建一个接口后把mapper.xml由mybatis生成接口的实现类,通过调用接口对象就可以获取 mapper.xml 中编写的 sql. 2.实现步骤: 2.1 创建一个接口 (1) ...