UMDK USOCK组件:如何零修改提升TCP应用网络性能的简单方法
【免费下载链接】umdkThe Unified Memory Development Kit(UMDK) is a set of distributed communication software stack with memory semantics as the core. It aims to design a new-generation network architecture through software-hardware collaboration, subvert the traditional communication form, and build a computing native network centered on memory semantic interconnection.项目地址: https://gitcode.com/openeuler/umdk
前往项目官网免费下载:https://ar.openeuler.org/ar/
openEuler UMDK(Unified Memory Development Kit)的USOCK组件是一套以内存语义为核心的分布式通信软件栈,其中UMS(Unified Memory Socket)作为USOCK的关键技术,能够帮助TCP应用实现零代码修改即可提升网络通信性能。本文将详细介绍如何通过UMS实现这一目标,让你的应用轻松获得低延迟、高吞吐量的网络传输能力。
UMS:让TCP应用性能飞跃的秘密武器 🚀
UMS是一种运行在Linux内核态的网络协议栈,它北向兼容标准Socket API,南向基于UB网络进行数据传输,能够透明加速TCP通信。其核心优势在于:
- 零代码修改:采用SMC-R的透明替换技术,应用层无需感知即可实现网络加速
- 高性能:针对小消息通信场景进行延迟优化,典型包长8KB/16KB平均延迟比TCP缩短30%
- 广泛适用:特别适用于对网络性能要求苛刻的场景,如Redis、数据库、AI训推、分布式缓存等
UMS架构示意图:展示了UMS在用户空间和内核空间的位置及主要组件
UMS的工作原理:透明加速的实现方式
UMS的透明加速能力源于其独特的工作机制。当应用程序调用标准Socket API时,UMS会在底层进行智能处理:
- 兼容标准Socket接口:使用TCP握手协议完成建连流程,协商错误时自动回退到TCP通信
- 采用共享内存通信:基于UMDK实现共享内存通信协议(SMC),充分发挥UB硬件设备性能优势
- 智能协议转换:通过LD_PRELOAD预加载动态库,劫持应用的socket()函数,将AF_INET转换为AF_SMC类型
UMS通信流程图:展示了客户端和服务器之间通过UMS进行通信的完整流程
UMS的TCP协商过程
UMS使用TCP选项(254)进行协商,整个过程对应用完全透明:
UMS TCP协商过程:展示了SYN、SYN-ACK和ACK三个阶段的协商过程
快速上手:UMS的安装与使用步骤
准备工作:检查系统兼容性
在安装UMS之前,需要确认内核是否支持SMC协议:
cat /boot/config-$(uname -r) | grep CONFIG_SMC显示CONFIG_SMC=m表示当前内核版本支持SMC协议,可以继续进行安装。
编译与安装UMS
获取UMDK源码:
git clone https://gitcode.com/openeuler/umdk cd umdk编译UMS RPM包:
tar -cvf /root/rpmbuild/SOURCES/umdk-26.06.0.tar.gz --exclude=.git $(ls -A) rpmbuild -ba umdk.spec --with ums安装UMS:
rpm -ivh /root/rpmbuild/RPMS/aarch64/umdk-ums-* modprobe ums
注意:UMS需要调用URMA组件的能力,使用前需保证URMA组件安装成功且正常配置。
零修改使用UMS加速应用
UMS提供了两种使用方式,其中透明替换方式无需修改任何应用代码:
# 透明替换./foo应用里的TCP socket接口 ums_run ./foo如果需要在代码中显式使用UMS,也可以直接设置AF_SMC协议族:
// 创建UMS socket sockfd = socket(AF_SMC, SOCK_STREAM, 0);UMS的性能优势与应用场景
UMS作为构建在UB网络架构之上的高性能通信协议,提供低延迟、高吞吐量的网络传输能力。根据测试数据,UMS在不同场景下均表现出显著优势:
- 单流性能:典型包长8KB/16KB平均延迟比TCP缩短30%
- 多流性能:10条连接下,典型包长8KB/16KB平均延迟比TCP缩短30%
这些优势使得UMS特别适合以下场景:
- 分布式数据库:提升数据同步和查询性能
- AI训练平台:加速节点间的参数交换
- 高性能缓存:如Redis集群的数据传输
- 金融交易系统:降低交易延迟,提高系统吞吐量
安全考量与最佳实践
UMS建链无认证,数据传输为明文,存在安全风险。应用在使用UMS时,应对标TCP socket,在应用层开启TLS认证和加密传输,保证端到端通信安全。
UMS模块参数调优
UMS支持在加载模块时通过参数对各项配置进行动态调整,例如:
modprobe ums ub_token_disable=1其中ub_token_disable参数用于控制是否禁用UB token,开启UB token会影响性能,请根据使用场景安全性评估决策。
总结:轻松提升TCP应用性能的最佳选择
通过UMDK的USOCK组件,特别是UMS技术,开发者可以在不修改应用代码的情况下,显著提升TCP应用的网络性能。UMS的透明替换技术、与标准Socket API的兼容性以及基于UB网络的高性能传输能力,使其成为提升分布式应用性能的理想选择。
无论是数据库、AI训练还是金融交易系统,UMS都能帮助你轻松应对网络性能挑战,实现应用的高效运行。现在就尝试使用UMS,体验零修改带来的性能飞跃吧!
更多详细信息,请参考官方文档:UMS User Guide.ch.md
【免费下载链接】umdkThe Unified Memory Development Kit(UMDK) is a set of distributed communication software stack with memory semantics as the core. It aims to design a new-generation network architecture through software-hardware collaboration, subvert the traditional communication form, and build a computing native network centered on memory semantic interconnection.项目地址: https://gitcode.com/openeuler/umdk
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考