存储系统性能带宽计算.docx

上传人:b****6 文档编号:8592868 上传时间:2023-02-01 格式:DOCX 页数:10 大小:332.58KB
下载 相关 举报
存储系统性能带宽计算.docx_第1页
第1页 / 共10页
存储系统性能带宽计算.docx_第2页
第2页 / 共10页
存储系统性能带宽计算.docx_第3页
第3页 / 共10页
存储系统性能带宽计算.docx_第4页
第4页 / 共10页
存储系统性能带宽计算.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

存储系统性能带宽计算.docx

《存储系统性能带宽计算.docx》由会员分享,可在线阅读,更多相关《存储系统性能带宽计算.docx(10页珍藏版)》请在冰豆网上搜索。

存储系统性能带宽计算.docx

存储系统性能带宽计算

1、IOPS和带宽对存储性能的影响?

说起存储产品的评价,性能永远是第一重要的问题。

关于性能的各种指标实在五花八门:

带宽〔Bandwidth〕、IOPS、顺序〔Sequential〕读写、随机〔Random〕读写、持续吞吐〔SustainedThroughput〕、突发处理能力〔BurstI/O〕等等看似甚为专业的名词充满着解决方案和技术分析报告。

存储产品的性能似乎被量化得格外清晰,作为用户,只需要简单的比较两个数字,就可以清楚的得出孰优孰劣的结论。

然而,事实果真如此吗?

就让我们走进那些五花八门的指数背后,去看看性能的真实面目。

 

1、带宽与I/O

    这是两个衡量存储设备性能最基本的概念,明确的区分两者也是对存储产品性能了解的第一步。

如果我们把存储设备比做一间会议室,被存取的数据就是前来参加会议或从会议中离开的人,那么带宽性能就是指这间会议室大门的宽度,大门越宽,可以同时进出的人也就越多,而I/O性能是指房门开合的频繁程度,迎来一批前来参加会议的人,就需要打开一次大门,送走一批人也是一样,哪怕这“一批人”其实只是一个人。

由此可见,当我们考察会议室的门设计得是否合理时,必须结合会议本身的性质。

  

    对纪律严明的会议来说,与会者轻易不会凌乱的进出会场,人们在会议开始时统一进入,结束时再统一离开。

对这种情况,门的宽度就十分重要,而是否易于开合则显得不那么关键,反正这扇门在整个会议中只需要开合两次而已。

相反的,对于联欢性质的聚会而言,门设计得太宽除了显得气派之外,并没有什么实际的意义,但是门开合的频率却很重要,因为会有客人频繁的进进出出。

  

    对应到存储设备上,道理也是一样。

大文件持续传输型的应用需要的是充分的带宽性能,而小文件随机读写的应用则要求足够的I/O能力。

那么多大的文件算“大文件”呢?

一般而言,超过1MB大小的文件就可以算做“大文件”了。

如果您的应用系统处理的资料中,最小的文件也有4~5MB甚至几十MB,就需要重点考察存储系统的带宽性能了。

如果您的应用是数据库形式,或是电子邮件系统,系统中有大量KB级大小的文件,那么就可以忽略掉产品介绍中xxxMB/s的字样,重点关心xxxIOPS就可以了。

  

    2、影响性能的因素

  

    当然,仅看产品彩页中的简单数字还是远远不够的。

存储设备的标称指数只是其最最理想情况下的表现,而实际应用中,存储设备表现出的处理能力往往与其标称指数相去甚远。

为了反映更多的细节,会议室的比喻不足以说明问题。

所以我们前面的例子再改良一下,把存储设备看作一栋有很多房间的大厦。

人们从门口进入大厦,先来到大堂,经过走廊,最后到达房间。

人们进大厦的方式也分为两种:

一种是所有人按房间号码顺序排好队,一起进入大厦,我们称之为“顺序进入”;另一种是他们无规律的自由进入,我们称为“随即进入”。

  

    显而易见,“顺序进入”的效率要大大高于“随即进入”。

这就说明,一般情况下,顺序读写的性能要远高于随即读写的性能。

还有一个结论也不难得出,一个宽敞的大堂更有利于偶然性较大的“随机进入”,而对“顺序进入”的人群而言,经过大堂基本属于浪费时间。

存储设备中的“大堂”就是高速缓存。

也就是说,大容量高速缓存可以提高随机读写性能,而对顺序读写的性能改良则不明显。

  

    还记得前面讨论的带宽和I/O的差异吗?

带宽考察的是单位时间进入大厦的人数,而I/O关心的是单位时间进出大厦的批次。

从次可见,如果走廊没有任何变化,那么大堂只要不是太小,就不会影响带宽性能。

相对的,对I/O性能而言,大堂显然是越大越好。

总之,影响带宽的因素主要是前端控制器〔大门〕和后端磁盘通道〔走廊〕的带宽;而影响I/O的因素主要是控制器〔大门〕处理能力和高速缓存〔大堂〕容量。

  

    当然,前面的讨论都基于一个假设前提:

磁盘〔房间〕足够多。

如假设只配置寥寥几个磁盘,它们就会成为整个系统的性能瓶颈。

任凭其他配置如何奢华,也于事无补。

那么,“足够多”又是多少呢?

对光纤通道存储设备来说,每个光纤通道上的磁盘数量到达50~60个的时候性能到达最正确。

所以一般中高端存储设备都把每通道50~60个磁盘设计为扩展极限,而不是光纤通道技术规定的126个。

 图1.磁盘数量影响光纤环路性能

这样设计存储产品,可以让系统的性能随着容量的增加而增长。

但是同时,用户必须明白,在容量没有配置到最大值的时候,性能就无法到达厂商所宣称的指标。

一些厂商还声明其产品的性能可以随着容量的增长而线性增长,按这样讲,当你的存储设备只配置了最大容量的一半时,你得到的性能也只有系统最正确性能的一半。

  

    3、性能曲线

  

    这里所说的“最正确性能”就是厂商所宣称的指数吗?

很遗憾,答案是不一定,一般都不是,而且可能会相差很远!

我已经听到有人在叫“天啊!

那厂商公布的数字到底有什么意义啊。

”别急,看到下面两个图示就清楚了。

图2.IOPS性能曲线例如

 

图3.带宽性能例如

这两个图示是典型的存储设备性能实测曲线,所有曲线来自同一个存储设备的同一个配置。

不同产品在纵向指标上表现各异,但曲线的形状都大体相同。

从图上可以看出,用户环境中存储设备的性能表现严重依赖数据块的大小。

以顺序读取操作为例,如果应用产生的数据块大小在8KB左右,那么带宽性能和I/O性能最多也只能到达峰值性能的一半左右。

如果希望得到更好的I/O性能,就需要尽量将数据块调整得更小。

但不幸的是,如果希望带宽性能更好,就需要想方法把数据块设置得更大。

看来,带宽与I/O性能是鱼与熊掌,难以兼得啦。

不过没关系,如我们前面提到的,幸好大多数用户其实只需要其中一种性能。

要么是大文件类型的应用,需要带宽性能;抑或是小文件类型应用,需要I/O能力。

需要带宽的用户相对容易得到满足。

从图3可以看出,只要数据块大于128KB,顺序读的性能就基本可以到达系统饱和值。

对顺序写,饱和数据块略大一些,但256KB也不算难以到达的尺寸。

得到最正确的I/O性能似乎就没那么容易了。

从图2的曲线来看,I/O性能并没有一个饱和状态,这就要求数据块无穷尽的尽量小。

然而所有应用都不可能支持无穷小的数据块。

实际上,大多数的数据库应用产生的数据块都在2KB或4KB左右。

在这个尺度上,应用得到的性能距离最高性能还有至少20~30%的空间呢。

  

    4、持续和突发

  

    回到我们那个关于大厦的例子。

如果大厦临时发生紧急情况,比方火灾,人们争先恐后的蜂拥在门口,景象一定是一片混乱。

在实际应用中,存储系统也可能遭遇类似的情况,一时间大量数据同时被访问,造成系统严重堵塞。

这就像存储系统内的交通高峰,往往需要类似交通管制的手段才能提高系统效率。

一些厂商会宣称他们的产品在这种情况下的“交通管制”能力有多强,以致可以从容应付大规模的突发访问。

诸如“全交换结构”、“直接矩阵结构”等技术均属此类。

究其本质,这些“交通管制”都是在大堂〔高速缓存〕的设计上做文章,将原本一个公共大堂的结构变成假设干独立大堂的结构。

以此来防止火灾发生时,所有人都拥挤到一个大堂里。

  

    这样设计确实可在访问突然爆发时缓解系统压力,但是需要注意,这样设计的大厦内部一定布满了各种指示牌和路标,对任何一个进入大厦的人而言,进入房间的过程都将变得更复杂。

其结果就是,非突发状态下,系统的持续读写能力往往还不如同等计算能力的简单结构存储。

  

    5、其他影响

  

    除了前面所谈到诸多方面外,还有很多因素都会影响到存储设备在实际运行中的性能。

例如RAID级别的设置、磁盘类型甚至型号批次的匹配、缓存的镜像、SCSI指令队列深度的设置,这些方面都与性能结果直接相关。

而且,为了能够得到最好的性能指数,几乎所有的厂商在测试自己产品性能的时候都会采用无冗余的RAID0、选用15krpm的高速磁盘、将写缓存镜像保护关闭或者干脆关闭写缓存、将指令队列深度设置为最大。

如此配置方式相信不是每个用户都可以接受的。

  

    另外,所有存储设备在运行快照或远程镜像等附加功能之后,性能都会明显下降,有些情况甚至会下降60%之多。

如果用户的应用恰巧需要这些附加功能,就需要在选用存储设备之前认真的实地测量一下真实性能。

免得满怀希望的买回家,使用起来却失望至极。

  

    结论和建议

  

    想要知道梨子的滋味,最好的方法就是亲自尝一尝。

对存储设备,这个道理尤其重要。

只有在用户需要的配置方式下,在实际的应用系统中,实实在在的运行之后,用户才能真正清楚的感知存储设备的真实性能表现。

纸上谈兵只怕会使用户在各种数据中迷失方向,难以做出正确结论。

2、存储设备的带宽计算

计算公式:

∙Real-worldresult=nominal*70%->我所标称的数据都是*70%以尽可能接近实际数据,但如果另外提供了由资料获得的更为准确的数据,则以其为准

∙Bandwidth=frequency*bit-width

∙QPI带宽:

假设QPI频率==2.8Ghz

×2bits/Hz(doubledatarate)

×20(QPIlinkwidth)

×(64/80)(databits/flitbits)

×2(unidirectionalsendandreceiveoperatingsimultaneously)

÷8(bits/byte)

=22.4GB/s

术语:

∙Westmere->IntelCPU微架构的名称

∙GB/s->每秒传输的byte数量

∙Gb/s->每秒传输的bit数量

∙GHz->依据具体操作而言,可以是单位时间内运算的次数、单位时间内传输的次数(也可以是GT/s)

∙1byte=8bits

∙IOH->I/OHub,处于传统北桥的位置,是一个桥接芯片。

∙QPI->QuickPathInterconnect,Intel前端总线〔FSB〕的替代者,可以认为是AMDHypertransport的竞争对手

∙MCH->MemoryControllerHub,内置于CPU中的内存控制器,与内存直接通信

∙PCIExpress(PeripheralComponentInteconnectExpress,PCIe)-一种电脑扩展总线(Expansionbus),允许外围设备与电脑系统内部硬件〔包括CPU和RAM〕之间的数据传输。

∙Overprovisioning-比方48*1Gbpsaccessport交换机,通常只有4*1Gbpsuplink,那么overprovisioning比=12:

1

∙X58–相当于传统的北桥,只不过不再带有内存控制器,Codename=Tylersburg

∙Ultrapoint-VNX/CLARiiON后端LCC〔linkcontrolcard〕的交换拓扑,实现在一个DAE内点到点的链接,而非FCAL总线结构

∙Ultraflex-EMCI/O模块〔SLIC〕的

∙Interconnect-PCIe设备通过一条逻辑连接(interconnect)进行通信,该连接也称为Link。

两个PCIe设备之间的link是一条点到点的通道,用于收发PCI请求。

从物理层面看,一个link由一条或多条Lane组成。

低速设备使用single-lanelink,高速设备使用更宽的16-lanelink。

∙Lane-一条lane由一对发送/接收差分线(differentialline)组成,共4根线,全双工双向字节传输。

一个PCIeslot可以有1-32条lane,以x前缀标识,通常最大是x16。

相关术语:

∙address/data/controlline

∙资源共享->资源仲裁

∙时钟方案〔ClockScheme〕

∙SerialBus

PCI-ECapacity:

Perlane(eachdirection):

∙v1.x:

250MB/s(2.5GT/s)

∙v2.x:

500MB/s(5GT/s)

∙v3.0:

1GB/s(8GT/s)

∙v4.0:

2GB/s(16GT/s)

16laneslot(eachdirection):

∙v1.x:

4GB/s(40GT/s)

∙v2.x:

8GB/s(80GT/s)

∙v3.0:

16GB/s(128GT/s)

性能是【端到端】的,中间任何一个环节都有自己的性能极限,它并不像一根均匀水管,端到端性能一致。

存储系统显然是不均衡的->overprovisioning。

我将以中端存储系统为例,高端存储过于复杂,硬件结构可能都是私有的。

中端系统相对简单,就以一种双控制器、SAS后端、x86架构的存储系统为例,为了方便名称引用,我们就成他为TEST吧。

控制器上看得见摸得着,又可以让我们算一算的东西也就是CPU、内存、I/O模块,不过我今天会带上一些极为重要但却会忽略的组件。

先上一张简图〔字难看了点,见谅〕,这是极为简化的电脑系统构成,许多中端存储控制器就是如此。

CPU -假设控制器采用IntelXeon-5600系列处理器〔WestmereMicroarchiecture〕,例如Xeon5660,支持DDR3-1333。

CPUBandwidth=2.8GHz*64bits/8=22.4GB/s。

内存 –TEST系统通过DMA(DirectMemoryAccess)直接在FrontEnd,内存以及Backend之间传输数据。

因此需要知道内存是否提供了足够的带宽。

3*DDR3,1333MHz带宽==29GB/s〔通常内存带宽都是足够的〕,那么bitwidth应该是64bits。

Westmere集成了内存控制器,因此极大的降低了CPU与内存通信的延迟。

TEST采用【X58IOH】替代原始的北桥芯片,X58chipset提供36lanePCIe2.0=  bandwidth〔后面会有更多解释〕。

I/O模块〔SLIC〕-SLIC是很多人关心的,因为它直接接收/发送I/O。

需要注意的是一个SLIC所能提供的带宽并不等于其所有端口带宽之和,还要看控制芯片和总线带宽。

以SASSLIC为例,一个SASSLIC可能由两个SASController组成,每个SASController带宽大约2200MB/s realworld,一个SASport=4*6Gbps/8*70%=2100MB/s;一个SASController控制2*SASport,可见单个SASController无法处理两个同时满负荷运转的SASport〔2200MB/s<4200MB/s〕,这里SASController是个瓶颈-> Overprovisioning!

整个SASSLIC又是通过【x8PCI-E2.0】外围总线与【IOH】连接。

x8 PCIebandwidth=8*500MB/s*70%=2800MB/s。

如果两个SASController满负荷运作的话,即4400MB/s > 2800MB/s,此时x8PCIe总线是个瓶颈-> Overprovisioning!

其实还可以计算后端磁盘的带宽和,假设一个Bus最多能连250块盘,假设是SAS15KRPM提供大约12MB/s的带宽〔非顺序随机64KB,读写未知〕,12*250=3000MB/s>2100MB/s-> Overprovisioning!

Tip

一个SASController控制两个SASPort,所以如果只需要用到两根bus,可以错开连接端口,从而使的得两个SASController都能得到利用。

同理,对任何类型的SLIC,只要能够获得其端口速率、控制器带宽、PCIe带宽,即可知道瓶颈的位置。

我选择算后端带宽的原因在于,前端你可以把容量设计的很大,但问题是流量过来【后端】能否吃下来?

CacheFull导致的Flush后端能否挡住?

对后端带宽是个考验,所以以SAS为例或许可以让读者联想到更多。

PCI-Express –PCIe是著名的外围设备总线,用于连接高带宽设备与CPU通信,比方存储系统的I/O模块。

X58提供了36lanePCIe2.0,因此36*500/1024= 带宽。

QPI&IOH –QPI通道带宽可以通过计算公式获得,我从手中资料直接获得的结果是19-24GB/s〔运行在不同频率下的值〕。

IOH芯片总线频率是 〔ListofIntelchipsets这里获得,但不确定总线频率是否就是指IOH本身的运行频率〕〔36Lane〕-> Overprovisioning!

OK,算完了。

能答复TEST最大能提供多少带宽了吗?

看下来CPU、RAM、QPI的带宽都上20GB/s,留给前后端的PCIe总线总共也只有18GB/s不到,即便这样也已经overload了IOH〔12GB/s〕。

所以看来整个系统的瓶颈在IOH,只有12GB/s,不过我自己并不确定这一点,还是留个有兴趣的读者自己去判断吧,然后顺便回来教育我下。

注意,下列图有点旧了,我把PCIe36Lane框成了MAXBandwidth,因为那个时候以为IOH应该有足够的带宽,但后来发现可能不是这样,但图已经被我擦了,所以就不改了

怎么算带宽并不是重点〔我自己都是摸瞎〕,更重要的在于,让你看到了一些平时被忽略的组件,我们通常只会从存储的CPU、I/O模块、磁盘来算性能极限。

但却忽略了整个系统中的其它部分,例如IOH、QPI、MCH、PCI-E,必须要从整个硬件系统的角度对I/Opath进行分析。

最后,欢送补充和纠正!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1