注意
本文档适用于 Ceph 开发版本。
UADK 压缩加速
UADK 是一个框架,使得应用程序能够以统一、安全、高效的方式访问硬件加速器。UADK 包括 UACCE、libwd 和许多其他算法库。
请参阅压缩器 UADK 支持.
UADK 在软件栈中
UADK 是一个通用用户空间加速器框架,它使用共享虚拟寻址(SVA)来为加密和压缩算法的硬件加速提供统一的编程接口。
UADK 包括统一/用户空间访问意图加速器框架(UACCE),它使支持 SVA 的硬件加速器能够适应 UADK。
目前,海思鲲鹏硬件加速器已经注册到 UACCE。通过 UADK 框架,用户可以使用硬件加速器而不是 CPU 来运行加密和压缩算法,从而释放 CPU 计算能力并提高计算性能。
用户可以通过在字符设备上执行用户模式操作来访问硬件加速器,或者通过已启用 UADK 支持的框架(例如 OpenSSL* libcrypto*、DPDK 和 Linux* 内核加密框架)来实现 UADK 的使用。
请参阅OpenSSL UADK 引擎.
UADK 环境设置
UADK 由 UACCE、供应商驱动程序和算法层组成。UADK 要求硬件加速器支持 SVA,并且操作系统支持 IOMMU 和 SVA。硬件加速器通过内核模式驱动程序以不同的字符设备形式注册到 UACCE。
+----------------------------------+
| apps |
+----+------------------------+----+
| |
| |
+-------+--------+ +-------+-------+
| scheduler | | alg libraries |
+-------+--------+ +-------+-------+
| |
| |
| |
| +--------+------+
| | vendor drivers|
| +-+-------------+
| |
| |
+--+------------------+--+
| libwd |
User +----+-------------+-----+
--------------------------------------------------
Kernel +--+-----+ +------+
| uacce | | smmu |
+---+----+ +------+
|
+---+------------------+
| vendor kernel driver |
+----------------------+
--------------------------------------------------
+----------------------+
| HW Accelerators |
+----------------------+
配置
内核要求
用户必须确保所使用的 Linux 内核版本支持 UACCE,该版本应为 5.9 或更高版本并启用 SVA(共享虚拟寻址)。
UACCE 可以作为可加载模块构建或集成到内核中。这里是一个使用海思鲲鹏平台的硬件加速器构建 UACCE 的示例。
CONFIG_IOMMU_SVA_LIB=y CONFIG_ARM_SMMU=y CONFIG_ARM_SMMU_V3=y CONFIG_ARM_SMMU_V3_SVA=y CONFIG_PCI_PASID=y CONFIG_UACCE=y CONFIG_CRYPTO_DEV_HISI_QM=y CONFIG_CRYPTO_DEV_HISI_ZIP=y
确保所有上述内核配置都被选中。
#. UADK 启用aarch64
,它将自动下载 UADK 源代码来构建静态库。在其他 CPU 架构上构建时,用户可以通过在编译命令行选项中添加-DWITH_UADK=true
来启用 UADK。请注意,UADK 可能不兼容所有架构。
#. 手动构建 UADKaarch64
,UADK 将自动启用,无需手动构建。但是,下面我们提供了手动构建 UADK 的步骤,以便开发者可以研究它是如何构建的。
git clone https://github.com/Linaro/uadk.git cd uadk mkdir build ./autogen.sh ./configure --prefix=$PWD/build make make installNote
没有
--prefix
,UADK 将默认安装在/usr/local/lib
下。如果你遇到错误:cannot find -lnuma
,安装libnuma-dev
软件包的一部分提供。
配置
编辑Ceph配置文件(通常为
ceph.conf
) 来启用 UADK 支持 forzlib压缩的QAT支持:uadk_compressor_enabled=true
默认值在global.yaml.inforuadk_compressor_enabled是
false
.
由 Ceph 基金会带给您
Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.