注意
本文档适用于 Ceph 的开发版本。
加密和压缩的QAT加速
英特尔QAT(QuickAssist Technology,快速辅助技术)可以通过将实际的加密和压缩请求卸载到硬件QuickAssist加速器来提供扩展的加速加密和压缩服务。对于这些计算密集型工作负载,QuickAssist加速器在成本和功耗方面比通用CPU更高效。
请参阅QAT 压缩支持和基于QAT的RGW加密。
软件堆栈中的QAT
应用程序开发人员可以通过QAT API访问QuickAssist功能。QAT API是QuickAssist技术的顶层API,可实现客户应用程序与QuickAssist加速驱动程序之间的轻松接口。
QAT API访问QuickAssist驱动程序,该驱动程序又驱动QuickAssist加速器硬件。QuickAssist驱动程序负责向应用程序软件公开加速服务。
用户可以直接编写QAT API,也可以通过其他人(包括英特尔)启用的框架使用QAT(例如,zlib*、OpenSSL* libcrypto* 和 Linux* 内核加密框架)。
QAT环境设置
QuickAssist加速器硬件是使用加速加密和压缩服务所必需的。并且必须加载内核空间中的QAT驱动程序来驱动硬件。
开箱即用的QAT驱动程序包可以从英特尔Quickassist技术下载。
QATlib可以从qatlib下载,它用于树内QAT驱动程序。
注意
开箱即用的QAT驱动程序正在逐步迁移到树内驱动程序+QATlib。
基于QAT的加密实现直接基于QAT API,该API包含在驱动程序包中。然而,QAT对压缩的支持依赖于QATzip项目,这是一个基于QAT API构建的用户空间库。在撰写本文时(2024年7月),QATzip加速了gzip的压缩和解压缩。
请参阅QATzip。
实施
基于QAT的RGW加密
OpenSSL对RGW加密的支持已合并到Ceph中,英特尔还为OpenSSL提供了QAT引擎。从理论上讲,Ceph中基于QAT的加密可以通过OpenSSl+QAT引擎直接支持。
然而,用于OpenSSL的QAT引擎目前仅支持链式操作,这意味着Ceph将无法利用基于OpenSSL加密插件的加密操作的QAT硬件功能。因此,在加密框架中添加了一个基于原生QAT API的QAT插件。
QAT压缩支持
如上所述,QAT对压缩的支持基于用户空间中的QATzip库,该库旨在充分利用QuickAssist技术提供的性能。与基于QAT的加密不同,基于QAT的压缩是通过用于QAT加速的工具类而不是压缩器插件来支持的。这个通用工具类可以透明地加速现有的压缩类型,但在撰写本文时仅支持zlib压缩器。这意味着如果QAT硬件可用,此工具类可用于加速zlib压缩器。
配置
Prerequisites
对于开箱即用的QAT
确保已安装版本为v1.7.L.4.14.0或更高的开箱即用QAT驱动程序。请记住为QAT驱动程序包根目录设置环境变量
ICP_ROOT。要启用基于QAT的加密和压缩,用户必须修改QAT配置文件。例如,对于英特尔QuickAssist Adapter 8970产品,修改目录
/etc/中的c6xx_dev0/1/2.conf并保持它们相同。例如#... # User Process Instance Section ############################################## [CEPH] NumberCyInstances = 1 NumberDcInstances = 1 NumProcesses = 8 LimitDevAccess = 1 # Crypto - User instance #0 Cy0Name = "SSL0" Cy0IsPolled = 1 # List of core affinities Cy0CoreAffinity = 0 # Data Compression - User instance #0 Dc0Name = "Dc0" Dc0IsPolled = 1 # List of core affinities Dc0CoreAffinity = 0
对于树内QAT
使用QATlib有一些先决条件。确保您的系统满足QATlib系统要求。
为了正确使用QATlib库,必须在平台BIOS中启用英特尔VT-d和SR-IOV参数。
某些QATlib功能需要较新的内核驱动程序或固件版本。请参阅QATlib内核驱动程序版本。
支持的平台包含4xxx英特尔通信设备或更新的版本。
必须启用
intel_iommu参数。通过运行以下命令来验证是否启用了此设置cat /proc/cmdline | grep intel_iommu=on sudo sh -c 'echo "@qat - memlock 204800" >> /etc/security/limits.conf' sudo su -l $USER
有关配置和调整,请参阅QATlib配置和调整。
基于QAT的RGW加密
必须设置CMake选项
WITH_QATDRV=ON。如果您从源代码构建Ceph(请参阅:构建Ceph),请导航到克隆的Ceph存储库并执行以下操作cd ceph ./do_cmake.sh -DWITH_QATDRV=ON cd build ininja
注意
QAT配置文件中的节名称必须为
CEPH,因为在Ceph加密源代码中节名称设置为CEPH。编辑Ceph配置文件(通常是
ceph.conf)以使用基于QAT的加密插件plugin crypto accelerator = crypto_qat
QAT压缩支持
对于开箱即用的QAT
对于开箱即用的QAT驱动程序包,在构建之前确保已安装QAT驱动程序和QATzip。除了
ICP_ROOT之外,将环境变量QZ_ROOT设置为QATzip源代码树的根目录。构建Ceph时必须配置以下CMake选项以触发基于QAT的压缩
./do_cmake.sh -DWITH_QATDRV=ON -DWITH_QATZIP=ON -DWITH_SYSTEM_QATZIP=ON -DWITH_QATLIB=OFF设置环境变量以阐明QAT配置文件中用户进程实例节的名称。例如
export QAT_SECTION_NAME=CEPH对于树内QAT
对于树内QAT,确保您的系统满足QATlib系统要求。QATlib可以从预构建包或源代码安装。请参阅QATlib安装。安装QATlib后,您可以运行
cpa_sample_code来检查QAT环境是否正常。如果您使用的是QATlib源代码,Ceph cmake 构建默认启用qatlib和qatzip选项。我们的正常编译已经包括与QAT压缩器相关的代码。
./do_cmake.sh如果您使用的是安装在系统上的预构建包,则在构建Ceph时必须配置以下CMake选项
./do_cmake.sh -DWITH_SYSTEM_QATLIB=ON -DWITH_SYSTEM_QATZIP=ON对于开箱即用QAT和树内QAT
编辑Ceph的中心配置数据库或配置文件(通常是
ceph.conf)以启用对zlib压缩的QAT支持qat compressor enabled=true
设置RGW压缩方法
# for storage class(STANDARD) radosgw-admin zone placement modify --rgw-zone=default --placement-id=default-placement --compression=zlib # or create a new storage class(COLD) and define data pool(default.rgw.cold.data) radosgw-admin zonegroup placement add --rgw-zonegroup default --placement-id default-placement --storage-class COLD radosgw-admin zone placement add --rgw-zone default --placement-id default-placement --storage-class COLD --compression zlib --data-pool default.rgw.cold.data
配置参考
以下与QAT相关的设置可以添加到Ceph配置文件(通常是ceph.conf)的[client.rgw.{instance-name}]节中。
- qat_compressor_session_max_number
使用QAT压缩器时,设置Qatzip中会话的最大数量
- 类型:
uint- 默认值:
256
- qat_compressor_busy_polling
设置QAT忙轮询以减少延迟,代价是可能增加CPU使用率
- 类型:
bool- 默认值:
false