2024年6月6日, OpenAtom openEuler(简称"openEuler") 24.03 LTS 版本(下载:openEuler下载 | openEuler ISO镜像 | openEuler社区官网)正式发布。openEuler 加速库也迎来了重要更新。本文将带各位读者详细了解openEuler加速库SIG【1】的重要组件UADK的能力,价值和发展状态。
1. UADK的起源和能力
UADK,全称为用户态硬件加速器开发工具包(User Space Accelerator Development Kit),支持共享虚拟地址(SVA)技术,为用户提供高效利用硬件加速器能力的统一编程接口。它为用户提供了基础的库和驱动支持。UADK 提供了一组不断扩展的高性能算法实现,涵盖了加密、压缩等功能。在最新的openEuler 24.03 LTS版本中,UADK已经能够同时支持硬件加速引擎和Arm64 SVE 以及 Crypto Extension CPU指令加速。
UADK提供的算法库使得用户应用程序能够利用服务器加速能力,显著提高应用性能。UADK由Linaro 和华为团队共同开发。
在最新版 openEuler 24.03-LTS 中,UADK支持的加速算法有:
• 压缩算法: GZIP,ZLIB,DEFLATE,LZ77_ZSTD
• 非对称加解密: RSA,DH,ECC(SM2,ECDSA,ECDH,X25519/X448)
• 对称加解密: AES,SM4,DES/3DES
• 摘要算法: SHA-1,SHA-2,SM3,MD5
Note:当前的使能调优工作基于鲲鹏920处理器芯片,但UADK作为通用的用户态框架,很容易与具备SVA能力的其他厂商硬件加速引擎进行集成。配合新的软算/硬算框架,未来UADK还可扩展至多架构CPU加速指令。
2. UADK 的加速效果
通过使用 UADK 和鲲鹏硬件加速器,在多种场景中都可以获得显著的性能提升。这里引用了2024年5月Linaro Connect上发布的实测结果。下面两张图分别展示了使用UADK在OpenSSL speed RSA2048,SM3,SM4测试时的性能提升,和在大数据场景中,HDFS Transparent Encryption / TeraSort SM4实测的处理能力提升。
如果您想了解更详细的分析说明,欢迎访问Linaro Resources Hub网站【2】观看完整演讲内容。
3. UADK 的生态使能
截至目前,UADK 已经和多种生态链加速组件进行了使能对接。这些工作大大降低了用户的使用门槛。让用户在不改变或少改变现有 APIs调用代码的前提下,使用到鲲鹏服务器的硬件加速能力。
目前已经对接的生态链加速组件包括:
• GmSSL 3.0,能让UADK更好地服务于国密算法SM2/3/4应用场景
• Nginx 1.20.0,对https短连接场景有很好的加速效果
• OpenSSL 1.1.1f+
• OpenSSL 3.0+
• DPDK,支持UADK crypto PMD 和UADK compress PMD
• SPDK,支持UADK crypto PMD 和UADK compress PMD
• OpenJDK / BishengJDK
• Zlib 压缩库
通过对JDK的支持,让UADK能够进一步惠及大数据和AI数据处理场景。
4. UADK 的设计要点
简单来说,UADK 主要由两部分组成:内核空间的UACCE 和 用户空间的算法库。两个部分分别负责向下和向上的生态对接。
通过UACCE 【3】,可使支持 SVA 的不同供应商的硬件加速器适应于 UADK。(注:Linux内核从 5.7 版本开始已经在 ARM64 平台上支持 UACCE 和 SVA。)
通过用户空间的算法库【4】,UADK 提供了一组不断扩展的高性能算法实现,涵盖加密、压缩等功能,如AES,SM4,GZIP等。这些算法库使用户应用程序能够利用硬件加速功能来显著提高性能。
5.openEuler-24.03-LTS 版本中的重要更新
从openEuler-22.03-LTS版本首次引入UADK,到今天的openEuler-24.03-LTS版本发布,UADK【4】以及与OpenSSL对接的UADK_Engine【5】迎来如下重要更新。
5.1 UADK
一、支持 SVE汇编 和 Crypto Extension (CE)指令加速:(同时支持软算和硬算,双算法)
• 使用了 CE 指令来加速 SM4(ECB、CFB、XTS、CBC、CTR)和 SM3 算法
• 使用了 SVE 指令来加速 SM3 和 MD5 哈希计算,并且支持multi-buffering
二、新的加密算法
• 支持SM4-XTS GB standard
• 支持AES-CBC CTS mode
三、更友好,更灵活的配置方式:
增强可配置性。提供了多项配置和管理功能,包括:可配置的队列深度,自定义内存管理,通过环境变量进行自定义配置,队列调度,设备查询,资源管理,用户状态 epoll,日志查询/管理。
四、测试工具和新增测试用例
五、简化用户API调用接口
5.2 UADK Engine
一、在原本OpenSSL 1.1.1f Engine框架的基础上,新增对OpenSSL 3.0+ Provider框架的支持
二、软件鲁棒性提升
三、效率提升,小包使用CPU软算
四、增强可配置性,易用性提升
6. 未来展望
目前团队在加紧实现的任务包括:
• 软算/硬算的调度策略
• 增加更多算法,包括CPU指令集的软算和硬算
• 在UADK_Engine中,针对新算法增加相应provider
• 将UADK适配到更多生态组件中,比如QEMU live migration, 又比如 Ceph
7. 参考资料
【1】openEuler Acclib SIG主页https://www.openeuler.org/zh/sig/sig-detail/?name=sig-AccLib
【2】MAD24-408 Accelerator: UADK’s usage and development, https://resources.linaro.org/en/resource/44w3i93Jq9dENzwc7mxATt
【3】Introduction of UACCE,https://docs.kernel.org/misc-devices/uacce.html
【4】UADK in github.com,https://github.com/Linaro/uadk
【5】UADK_Engine in github.com,https://github.com/Linaro/uadk_engine
8. 关于Linaro
Linaro 支持在动态Arm 生态系统中快速部署产品。Linaro 的尖端解决方案和协作平台促进开源创新的快速开发、测试和交付,使企业能够在当今竞争激烈的技术领域保持领先地位。Linaro 在企业和开源生态系统之间营造了一个协作、标准化和优化的环境,并在开源发现和采用方面发挥着关键作用。
Linaro 的专业知识和贡献涵盖测试和Linux 长期支持、安全、云和边缘计算、物联网、人工智能、汽车、CI/CD、工具链、虚拟化以及专注于支持和维护的垂直项目,比如Windows on Arm 和 Android 生态系统。
自2010年起,Linaro公司一直致力于建立信任、保证质量,并促进行业内的协作。
官网访问: www.linaro.org