PCI-Express,通常被称作PCI-E,这种新兴的总线架构将在未来成为你设计系统构架时所必须要考虑的重要因素。PCI-E技术促进了基于Infiniband的存储和连接的普及速度。 PCI-E的出现使得I/O总线的性能第一次超过了同期最快的主机接口速度。这也就算意味着一个科技史上非常重要的时期已经来临,即总线已经足以满足各种类型卡的运行需求。稍候再来关注这一点,首先我们先了解一些背景知识。
我经常会抱怨I/O的状况和数据通道的性能。下面的图表列出了从1977年至今不同技术的发展所带来的性能提升。需要注意到的是,存储技术是远远落后于其它技术的。
通过上面图表中的数据,我们可以看出存储性能是严重落后的。这个趋势在一段时间之内都不会得到改变,因为存储技术存在物理上限制,但是PCI-E技术给我们带来了希望。
PCI-E的设计和系统构架
PCI-E是一种双向串行连接。其总线本身又分成数个通道,每个通道支持2.5Gbit/S的双向数据传输速度。通过编码和误差校验处理后,数据被转换成适用于NIC、HCA和HBA传输的250MB/秒的有效带宽,这足以满足2Gb Fiber Channel的HBA卡。
这里需要着重介绍的一个概念就是通道。举个例子,如果你要使用4Gb的Fiber Channel,并在一个端口的HBA上全双工运行的话,你就需要400MB/S的双向带宽。如果使用PCI-E技术,只需要两个全速开放的子通道就能够满足需求。你也可以使用单通道,但是你会被限制在250MB/S的速度上。这对于像数据索引搜索这类应用的IOPS是足够的了。
如果使用400MB/S的无其它开销的传输速度来应付16KB请求的话,每秒可完成25000个(400MB/S 16000KB)请求,而250MB/S的一个单通道每秒则能够处理16000个请求。但因为有附加的头文件,所以实际应用中永远达不到这个速度。但是从另一方面说,一个或两个通道已经能够满足大部分的服务器、HBA卡和RAID系统的传输需求了。
如果只以IOPS的角度来看,一个单通道就能够和一块4GB HBA协同工作了。如果使用双端口的话,一个或者两个通道就满足大多数RAID架构的需求。
如果假设一块硬盘每秒的随机I/O读取次数最多在150次左右的话,那么很多数量的磁盘驱动器和缓存才能使其达到全速。由于大多数的RAID控制器没有8K的命令序列, 因此你也将大大超越RAID控制器的命令序列。
我记不得有哪个时期I/O总线的性能超过了最快的主机接口速度,因此我认为我们到达了一个科技史上非常重要的时刻,总线已经足以满足各种外接卡的速度需求。而这就意味着有了一些新状况已产生:
要有足够的内存带宽才能使总线全速运行:使用新的16通道PCI-E,全速双向运行总线可达10 GB/S(2.5 Gb/S*2 *16/8)的带宽。对于如今大部分x86和AMD系统的内存带宽来说的这都是一个不小的值。
系统中的瓶颈:许多来自各类厂商的PCI和PCI-X总线接口与内存系统之间总是存在性能瓶颈。在大多数情况下,这些性能设计缺陷限制了总线性能,即限制了总线从内存中读取和写入性能。偶尔总线本身也存在设计缺陷,但这种情况比总线与内存间出现问题的几率要小。可以明显地看出,我们需要这个接口的性能达到PCI-X的1GB/秒或更高。这就需要厂商检查接口的设计、进行早期的测试。
新I/O卡:随着新一代总线的推出,相对应的I/O卡也必须得到发展。这其中包括Fibre Chnanel、InfiniBand和新一代以太网(1G和10G)卡。测试这些卡的流量性能是很困难的。虽然找到测试设备并非难事,但是找到了解硬件知识的人才和确定卡所部属的软件堆栈是比较困难的。如果这些卡有良好的速度和IOPS性能,那会很理想。但如果存在瓶颈,就很难更正。其中的问题可能存在于很多方面:应用程序、操作系统、I/O驱动、卡驱动、PCI-E总线、内存带宽或者其它数据通道的问题。在1990年,我参与了早期Fiber Channel的测试,当时就有厂商表示我们可以通过解决数据通路上的一些问题来提高其接口速率。
架构工程师该怎么做?
很明显的,PCI-E在I/O处理性能和IOPS方面都比PCI-X有更多的优势。DELL、HP和其它厂商的很多低端PC产品上都已经开始采用PCI-E了。
但是拥有大型SMP系统的服务器厂商呢?PCI-E总线在哪里?这主要是由于大型SMP系统的服务器有更强大的内存带宽和更复杂的内存基础结构。当你在一个单一的主板上设计PCI-E总线是非常简单的。而设计大型系统就复杂多了,有很多总线和内存的相互接口纵贯在板子上。当然,厂商们应该提前考虑一下新一代服务器能够实现这种升级,但这不是一个简单的问题。如今,大部分的SMP服务器厂商使用PCI-X技术,而不是PCI-E.出现这种情况有很多原因:
由于卡片的电压问题,PCI-E和PCI-X的NIC、HBA和HCA卡是不可互换的。这就意味着必须有两套接口:一套是用于刀片系统运行PCI-E,另一套是针对大型机的SMP系统。
SMP I/O性能不如刀片系统。高端家用PC拥有8X PCI-E的I/O接口和16X的图形卡接口。因此这些系统需要比内存带宽更大的带宽需求。其实际的带宽超过了12个PCI-X插槽全速运行的带宽。
PCI-E将会在图形总线技术上使用很多年。不幸的是许多大型SMP厂商没有计划在当前产品中加入PCI-E接口。这个设计的改变是非常复杂的,但是许多厂商总是会对I/O设计的滞后性感到懊悔。而作为最终用户,也许我们需要努力让大型SMP厂商认识到I/O的重要性。
阅读(650) | 评论(0) | 转发(0) |