通用平台下突破时延短板 XSKY利用DPDK增强Ceph网络效能

业界共识,网络层是分布式存储 "性能木桶的最短板"。在存储领域的概念中,一般有两张网络--用户应用与存储对接的"接入网络"和存储系统内部交换数据的"数据分布网络"。传统存储的"数据分布网络"通常用SAS总线或Infiniband网络实现,牺牲的是水平扩展能力和通用硬件特性,换来较低的时延和相对较少的*处理器负担。而在主流的分布式存储系统中,为了整个集群的硬件通用一致性,和接入部分一样,通常采用基于TCP/IP的以太网进行数据分布工作。基于Linux内核的通用TCP/IP协议栈在10Ge以上的高带宽条件下,面对大量的数据交换工作,性能和资源利用率两方面都难令人满意。

另一方面,TCP/IP网络协议本身是一个复杂庞大的标准,通用的TCP/IP实现通常是一个"谦逊"的方式进行包收发,使得不管在手机,终端,WAN下都有较好表现,但是在目前数据中心网络越来越快的背景下,特别是存储后端速度飞速提高下,通用TCP/IP栈已经很难满足需求。那么是不是意味着在兼容性和性能两方面一定要进行取舍?

DPDK是Intel、6WIND、Calsoft Labs、Tieto等公司应对这一问题的解决方案[1]。在x86架构下,处理数据包的传统方式是CPU中断方式,即网卡驱动接收到数据包后通过中断通知CPU处理,然后由CPU拷贝数据并交给协议栈。在数据量大时,这种方式会产生大量CPU中断,导致CPU无法运行其他程序。而DPDK则采用轮询方式实现数据包处理过程:DPDK重载了网卡驱动,该驱动在收到数据包后不中断通知CPU,而是将数据包通过零拷贝技术存入内存,这时应用层程序就可以通过DPDK提供的接口,直接从内存读取数据包。这种处理方式节省了CPU中断时间、内存拷贝时间,并向应用层提供了简单易行且高效的数据包处理机制,使得网络应用的开发更加方便[2]。

通用平台下突破时延短板 XSKY利用DPDK增强Ceph网络效能

DPDK技术最初为Intel公司贡献,于2013年开源。DPDK可与Intel、Mellanox等厂商的高速以太网卡协同运行,使得在x86平台上构建和ASIC效能相当的网络模块成为可能,因此,在SDN/NFV领域,DPDK被认为是关键的开源技术之一。

通用平台下突破时延短板 XSKY利用DPDK增强Ceph网络效能

为了推进Ceph存储系统中两个网络的融合化,发挥通用硬件潜力,XSKY[3]自从去年底开始尝试利用DPDK实现数据客户端与OSD之间的网络通信,以及OSD之间数据复制的网络通信,充分利用DPDK的缓存管理、无锁队列与用户态轮询式网卡驱动,在x86通用平台和标准IP交换网络下将数据分布网络的时延降到可与传统存储系统相匹敌的水平。

通用平台下突破时延短板 XSKY利用DPDK增强Ceph网络效能

在 Ceph Jewel版启用的 AsyncMessenger 新网络框架中会支持插件式网络后端,如默认的Kernel TCP/IP,DPDK Userspace TCP/IP[5] 和未来的Infiniband/RDMA网络。AsyncMessenger实现同一个网络会话处理层面向不同的网络设备和后端。新的Userspace TCP/IP[4]栈会最小化TCP的损耗,实现对CPU核的负载分区。结合运行于SPDK NVMe驱动BlueStore,最大化DPDK的资源调配优势,实现端到端的无锁调度和内存零拷贝。

根据最近使用ceph_perf_msgr_server/ceph_perf_msgr_client在原型代码上的测试[5](相当于Linux中的iperf 工具,进行在Ceph网络框架上的消息传输压测),如果采用标准的Linux内核TCP/IP栈,IO发起者和远端OSD组件间的PingPong时延大概在100μs左右;使用DPDK优化的网络协议栈,这个数值降至25~30μs,更加接近IB-RDMA协议栈下5~8 μs的水平。可以预见,这一优化必将使通用硬件上的Ceph分布式存储系统的网络层瓶颈得到又一次突破,以便适应更加普遍的OLTP应用场景。

下图中的时延测试数据包括Message Encode/Decode,Fast Dispatch和整个Messenger会话逻辑,这部分固有延迟时间占据1/3左右。

通用平台下突破时延短板 XSKY利用DPDK增强Ceph网络效能

测试环境在两个物理机之间使用Intel 82599ES芯片的万兆网卡,开启了以下硬件Offload 技术:

1. RX/TX TCP Checksum Offload

2. RX/TX IP Checksum Offload

3. TX TCP Segmentation Offload

4. TX VLAN Tag Insert

5. RX RSS

6. RX VLAN Stripping

7. HW CRC Stripping

8. RX TCP Large Receive Offload

9. Hardware Flow Control

该测试同样适用用于Mellanox MT27710 ConnectX-4 Lx。

在业界利用专用硬件设备如高速网卡,高速SSD和FPGA优化方案层出不穷的背景下,用通用和开放架构解决分布式存储性能问题仍然是一个值得尝试的方向。软件定义存储不仅仅是在API,控制面提供灵活性,更应该在数据面提供开放、通用且统一的存储服务。网络与硬盘性能一直是制约存储软件化的关键因素。而现在,借助于开放的DPDK、SPDK对于硬件能力和丰富特性的抽象,我们希望在兼容性和性能上完成一个平衡,让硬件提供机制,软件实现策略,来真正提供软件定义数据面的能力,给用户提供的是一个开放而又高性能的存储服务。

DPDK网络是构建全用户态软件定义存储的关键一步,XSKY会在下个月的Ceph Off-site会议上贡献DPDK部分代码并开始发起对于主线的合并,并在即将到来的4月7日的产品发布会上将揭示这一技术的全景,敬请期待。


原文发布时间为: 2016年03月31日

本文作者:刘新萍

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

上一篇:如何弥补因失误导致的VPC选择错误的问题


下一篇:利用云存储网关在Windows上挂载OSS