http://www.chiphell.com/thread-725877-1-1.html 因为最近在DIY NAS的过程中突然产生了一个想法,考虑把台式机的硬盘基本都转移到NAS的阵列上面。虽然主板上有双1Gbps链路聚合,但是始终觉得就这样通过网络访问阵列实在是太浪费RAID6的性能了。于是便开始琢磨搞10Gbps的网络。 10G网络互连开始准备了几个方案: 1. 搞2块10G的二手网卡,结果一看ebay的价格立刻就跪了。不仅二手货很少,而且价格都是好几百刀。 2. 搞2块光纤网卡,同样是给价格打败了。 3. 2块Infiniband。心想这货都是高性能计算用,价格肯定也是吓死人的。 结果发现二手的10G的Infiniband卡只要几十刀而已,于是果断入了下面这两张卡,准备开工。 硬件篇 我自己用的这两张卡都是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%了。为了解决这个问题,使用零拷贝技术是必须的。 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照漏了,赶紧补上 |
infiniband获悉
最新推荐文章于 2024-07-31 21:07:33 发布