旧时王谢堂前燕,飞入寻常百姓家——Infiniband实现10Gbps互联

旧时王谢堂前燕,飞入寻常百姓家——Infiniband实现10Gbps互联
http://www.chiphell.com/thread-725877-1-1.html
(出处: Chiphell - 分享与交流用户体验的最佳平台)


好不容易转正了,来发第一帖。Show点之前没人show过的东西。
因为最近在DIY NAS的过程中突然产生了一个想法,考虑把台式机的硬盘基本都转移到NAS的阵列上面。虽然主板上有双1Gbps链路聚合,但是始终觉得就这样通过网络访问阵列实在是太浪费RAID6的性能了。于是便开始琢磨搞10Gbps的网络。

10G网络互连开始准备了几个方案:

1. 搞2块10G的二手网卡,结果一看ebay的价格立刻就跪了。不仅二手货很少,而且价格都是好几百刀。

2. 搞2块光纤网卡,同样是给价格打败了。

3. 2块Infiniband。心想这货都是高性能计算用,价格肯定也是吓死人的。

结果发现二手的10G的Infiniband卡只要几十刀而已,于是果断入了下面这两张卡,准备开工。




硬件篇

Infiniband是什么?
Infiniband是一种交换式互联网络,由于其高性能低延迟的特性,通常用于高性能计算、超级计算机、企业级数据中心等领域。目前Top500强的超级计算机里有224台使用Infiniband作为互联网络。

Infiniband有多重规格,不同的规格和链路数量的组合可以提供不同的通信速度:
Infiniband速度一览表
表中列出的速度是串行信号的传输速度。因为Infiniband使用8b/10b或者64b/66b编码,所以实际的数据传输速度要打点折扣。

目前主流的系统使用最多的是4x QDR,而速度较慢的SDR和DDR设备逐渐淘汰,所以才能买到比较便宜的二手货。当然,新货还是很贵,都是Mellanox和Intel垄断的原因。

我自己用的这两张卡都是4x SDR的,信号速度是10Gb/s,数据传输速度有8Gb/s(1GB/s)。

两张卡的总线接口不大一样,PCI-X的那张准备装在NAS上,PCI-E 8x的那张是给台式机用的。每张卡都自带128MB ECC DDR SDRAM作为缓存。每张卡上有2路Infiniband。

PCI-X这张是Mellanox原厂的MHET2X-1TC,缓存芯片是奇梦达生产的,正反两边一共9颗。




PCI-e这张卡是TopSpin(Cisco)的,用的还是Mellanox的芯片,不过缓存变成了镁光的。




有了卡之后,自然要有线。Infiniband SDR和DDR一般用的都是CX4的接口。像这样:

这接口在一些比较奇葩的早期SAS阵列卡上也能见到。

QDR和FDR之类基本都用QSFP了,和CX4完全不同的。

买了一根对应的线:




两张卡用连接起来以后就像这样:


NAS装机前还拍了张合照:

Supermicro X7DVL-i的主板,配的是Xeon L5410一只,也算是有四个核了,都是二手古董,除了超便宜以外满是嘈点。日后考虑可以再装一个CPU。


基本安装与配置


先列一下两台测试机的主要配置。
NAS:
CPU:Intel Xeon L5410 2.33GHz 12MB$ x1
主板:Supermicro X7DVL-i
内存:2GB FB-DIMM x2
阵列卡:LSI 8888ELP
硬盘:WD 2T 红盘 x8 (还没买),只有个80G的系统盘。使用Ramdisk进行测试。
操作系统:Debian 6.0,linux-3.2.32-scst kernel


台式机:
CPU:Intel i7-2600K @ 4.5GHz
主板:ASUS P8Z68-V
内存:贼船Vengeance 4GB x2
操作系统:Windows 8 Pro

Debian上的安装配置比较繁琐,反正一堆命令,我就先不详细写了。Windows上的安装比较简单,主要就是安装驱动程序。驱动使用开源的 OFED,windows对应的安装程序是 OFED 3.1。不过比较坑的是官方的安装包只支持到Win7,Win8是装不了的。不过好在官方论坛有人发了重新打包的版本,我这才安装成功。

没装驱动之前,系统还是能识别出来有一个新的Infiniband设备


装好驱动以后就冒出一堆新设备了。

这里有IPoIB的驱动是一定要装的,不然是没有办法通过IP网路通信的。SPR的驱动其实是可选的,详细的后面再说。


这里出现了2个IPoIB网卡,这个是Infiniband提供的IP网络通信设备,对应2个IB接口。虽然Infiniband的底层传输协议和以太网完全不同,不过这并不影响IP协议栈的实现。点开属性就可以看到赫然写着的10Gbps:

属性里面已经有IPv4和IPv6的协议了


因为是两台机器直连,不经过交换机。参考对等网的IP配置:
NAS:192.168.32.1
台式机:192.168.32.3


除了IP的配置以外,网卡的工作模式也有一些设置要注意。
Infiniband网卡默认的工作模式是datagram,我这里需要的是connected模式

MTU也要设置一下,不过一般默认的65520的可以了。这才是真Jambo Frame。


到这一步IP网络就已经通了。给Ramdisk架了简单的Samba服务测试一下速度。结果当然是…… 相当坑爹!持续传输速度就只有200MB/s左右

于是这问题在哪?

问题就处在传统网络设备的工作模式需要CPU参与数据拷贝,对于高速网络来说在网络链路饱和之前CPU占用率就已经到100%了。为了解决这个问题,使用零拷贝技术是必须的。
零拷贝(zero-copy)是实现主机或路由器等设备高速网络接口的主要技术。零拷贝技术通过减少或消除关键通信路径影响速率的操作,降低数据传输的操作系统开销和协议处理开销,从而有效提高通信性能,实现高速数据传输。
零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一。数据拷贝受制于传统的操作系统或通信协议,限制了通信性能。采用零拷贝技术,通过减少数据拷贝次数,简化协议处理的层次,在应用和网络间提供更快的数据通路,可以有效地降低通信延迟,增加网络吞吐率。

Infiniband设备实现的功能是RDMA(Remote DMA),允许数据直接从内存复制到IB设备的缓存中而不需要CPU干预。

而要使用RDMA进行磁盘访问就必须要安装前面提到的SRP(SCSI RDMA Protocol)驱动。这个东西的原理和iSCSI比较像,也是可以把远程的target映射为本地的磁盘。只不过SRP可以利用RDMA的功能,而iSCSI在Infiniband上还是得通过IPoIB的形式。iSCSI也有一个iSCSI RDMA Protocol (iSER) ,回头有机会再试试吧。

于是直接上结果吧:
首先是在服务器使用Ramdisk作为块设备的结果

基本上有621MB/s的稳定速度

服务器端使用内存文件做虚拟盘也能得到差不多的速度:


而且要提的一点是这两种情况下NAS的CPU占用率都不超过50%,零拷贝带来的效果十分明显。
虽然离1GB/s的理论速度有差距,但是目前是没有办法解决的。因为NAS端是的IB卡是PCI-X接口的,Intel的南桥相当坑爹,没有办法提供PCI-X 133接口的理论带宽。目前在考虑换成一个PCI-e接口的卡。

所以这里只能转个别人的图展示一下极限速度了


真950MB/s读速度!不过写速度没我的快,因为他的卡没有缓存。

===================================
总结

1. Infiniband做家用网络还是很靠谱的,10Gbps的速度估计在相当长的时间内都不会过时吧(毕竟SATAIII也才6Gbps),而且价格便宜这一点还是很诱人的。

2. 不过“便宜”二字是是有前提条件的:不能用Infiniband交换机,因为这货即便是二手的也是超贵,好几百刀这样的水平(12口左右的,SDR/DDR这种淘汰技术)。如果你有多台机器要连接,可以采用类似菊花链的形式,但是必须要使用2口的IB卡。不过菊花链的形式下可能只有IPoIB能工作,SRP可能是没法用的。


3. IB卡是分有缓存和无缓存两种。主要差别实在写速度上的差别。有缓存的卡SRP写操作的速度要快得多。

恩,有其他的再补充好了。

补充1:之前说Samba运行在IPoIB上性能一般,因为没有利用RDMA。但是微软最新的SAMBA 3.0协议是添加了这一支持的,Win8和WinServer2012就可以使用(Win7不行)。但是Linux上的Samba服务器还没有实现这一支持,所以我还没办法测试。不过将来总会支持的XD。

补充2:ID照漏了,赶紧补上


DSC_1940.jpg(554.93 KB, 下载次数: 6)

DSC_1940.jpg

DSC_1942.jpg(533.99 KB, 下载次数: 4)

DSC_1942.jpg

new_disk.jpg(24.62 KB, 下载次数: 6)

new_disk.jpg

srp.jpg(19.95 KB, 下载次数: 5)

srp.jpg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值