注意

本文档适用于 Ceph 的开发版本。

UADK 加速压缩

UADK 是一个框架,使应用程序能够以统一、安全和高效的方式访问硬件加速器。UADK 由 UACCE、libwd 和许多其他算法库组成。

参见 Compressor UADK Support

软件堆栈中的 UADK

UADK 是一个通用的用户空间加速器框架,它使用共享虚拟寻址 (SVA) 为加密和压缩算法的硬件加速提供统一的编程接口。

UADK 包括统一/用户空间访问加速器框架 (UACCE),它使支持 SVA 的硬件加速器能够适应 UADK。

目前,海思鲲鹏硬件加速器已经注册到 UACCE。通过 UADK 框架,用户可以使用硬件加速器而不是 CPU 来运行加密和压缩算法,从而释放 CPU 计算能力并提高计算性能。

用户可以通过对字符设备执行用户模式操作来访问硬件加速器,或者通过其他已启用 UADK 支持的框架(例如 OpenSSL* libcrypto*、DPDK 和 Linux* 内核加密框架)来实现 UADK 的使用。

参见 OpenSSL UADK Engine

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 可能不兼容所有架构。

#. 手动构建 UADK 如上所述,如果架构是 aarch64,UADK 会自动启用,无需手动构建。但是,下面我们提供了手动构建 UADK 的过程,以便开发人员可以研究其构建方式。

git clone https://github.com/Linaro/uadk.git
cd uadk
mkdir build
./autogen.sh
./configure --prefix=$PWD/build
make
make install

注意

如果没有 --prefix,UADK 将默认安装在 /usr/local/lib 下。如果出现错误:cannot find -lnuma,请安装 libnuma-dev 包。

  1. 配置

    编辑 Ceph 配置文件(通常是 ceph.conf)以启用 zlib 压缩的 UADK 支持

    uadk_compressor_enabled=true
    

    global.yaml.inuadk_compressor_enabled 的默认值为 false

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入