注意

本文档适用于 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    |
         +----------------------+

配置

  1. 内核要求

用户必须确保所使用的 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 install

Note

没有--prefix,UADK 将默认安装在/usr/local/lib下。如果你遇到错误:cannot find -lnuma,安装libnuma-dev软件包的一部分提供。

  1. 配置

    编辑Ceph配置文件(通常为ceph.conf) 来启用 UADK 支持 forzlib压缩的QAT支持:

    uadk_compressor_enabled=true
    

    默认值在global.yaml.inforuadk_compressor_enabledfalse.

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.