业界共识,网络层是分布式存储 "性能木桶的最短板"。在存储领域的概念中,一般有两张网络--用户应用与存储对接的"接入网络"和存储系统内部交换数据的"数据分布网络"。传统存储的"数据分布网络"通常用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]。
DPDK技术最初为Intel公司贡献,于2013年开源。DPDK可与Intel、Mellanox等厂商的高速以太网卡协同运行,使得在x86平台上构建和ASIC效能相当的网络模块成为可能,因此,在SDN/NFV领域,DPDK被认为是关键的开源技术之一。
为了推进Ceph存储系统中两个网络的融合化,发挥通用硬件潜力,XSKY[3]自从去年底开始尝试利用DPDK实现数据客户端与OSD之间的网络通信,以及OSD之间数据复制的网络通信,充分利用DPDK的缓存管理、无锁队列与用户态轮询式网卡驱动,在x86通用平台和标准IP交换网络下将数据分布网络的时延降到可与传统存储系统相匹敌的水平。
在 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左右。
测试环境在两个物理机之间使用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日的产品发布会上将揭示这一技术的全景,敬请期待。
好文章,需要你的鼓励
这项由浙江大学与阿里巴巴通义实验室联合开展的研究,通过创新的半在线强化学习方法,显著提升了AI界面助手在多步骤任务中的表现。UI-S1-7B模型在多个基准测试中创造了7B参数规模的新纪录,为GUI自动化代理的发展开辟了新的技术路径。
阿里巴巴联合浙江大学开发的OmniThink框架让AI学会像人类一样慢思考写作。通过信息树和概念池的双重架构,系统能够动态检索信息、持续反思,突破了传统AI写作内容浅薄重复的局限。实验显示该方法在文章质量各维度均显著超越现有最强基线,知识密度提升明显,为长文本生成研究开辟了新方向。
新加坡国立大学研究人员开发出名为AiSee的可穿戴辅助设备,利用Meta的Llama模型帮助视障人士"看见"周围世界。该设备采用耳机形态,配备摄像头作为AI伴侣处理视觉信息。通过集成大语言模型,设备从简单物体识别升级为对话助手,用户可进行追问。设备运行代理AI框架,使用量化技术将Llama模型压缩至10-30亿参数在安卓设备上高效运行,支持离线处理敏感文档,保护用户隐私。
腾讯混元3D 2.0是一个革命性的3D生成系统,能够从单张图片生成高质量的带纹理3D模型。该系统包含形状生成模块Hunyuan3D-DiT和纹理合成模块Hunyuan3D-Paint,采用创新的重要性采样和多视角一致性技术,在多项评估指标上超越现有技术,并提供用户友好的制作平台。作为开源项目,它将大大降低3D内容创作门槛,推动3D技术的普及应用。