随着本周推出的英特尔第 4 代至强可扩展“Sapphire Rapids”处理器,英特尔在集成加速器上押下重注,为它们提供优于竞争对手的现代超大规模任务和其他能够利用内存分析加速器的工作负载的优势( IAA)、数据流加速器 (DSA)、QuickAssist 技术 (QAT) 和动态负载平衡器 (DLB)。但是,当前的软件前景如何?在 Linux 下实际使用这些加速器需要什么?以下是在 Linux 服务器上使用加速器的简要操作教程/概述。
我一直在研究一些 Intel Sapphire Rapids 加速器基准测试,这些基准测试有望在下周开始发布,但是考虑到所有这些新的集成 IP 都进入了第 4 代 Xeon Scalable 以及围绕它的许多读者问题,我认为最好从一篇专门研究软件支持和设置的文章。此外,由于我现在只使用 Sapphire Rapids 服务器一周,所以我仍在研究加速器设置和使用的所有软件复杂性。使用新加速器并不像使用 AVX 那样使用新指令那么简单。相反,有内核驱动程序以及用户空间库和相关支持组件。此外,除了存在用户空间库之外,还需要配置和启用加速器才能在您的系统上使用。加速引擎
作为本周早些时候 Sapphire Rapids 文章的简要回顾,新的 IP 块包括:
Intel QuickAssist Technology (QAT) – QuickAssist 技术之前已在部分 Intel 芯片组和 SoC 以及 QuickAssist 适配器 PCIe 附加卡中找到,但现在 Sapphire Rapids 可直接集成到 Xeon 可扩展 CPU 中。与仅依赖 CPU 内核相比,QuickAssist 可以提供更快的压缩和加密性能。鉴于 QuickAssist 技术已经存在了一段时间,这里有目前最好的软件支持和采用,并且在激活 QAT 引擎支持时可以很容易地被 OpenSSL 和其他软件之类的软件使用。
英特尔动态负载平衡器 (DLB) – 虽然类似的功能可通过 DPU 获得,但带有 Sapphire Rapids 的英特尔 DLB 允许卸载一些围绕负载平衡、队列管理、数据包优先级排序和其他类似功能的任务。使用 DLB 需要 DLB 内核驱动程序和 DLB 轮询模式用户空间驱动程序。还有“libdlb”作为库,用于在不使用数据平面开发工具包 (DPDK) 框架的情况下创建 DLB 加速软件。DLB 的 DLB 内核和用户模式驱动程序目前通过Intel.com分发。DLB 内核驱动程序是开源的,英特尔目前针对 5.15 和 5.19 内核对其进行了测试。
英特尔内存分析加速器 (IAA) – 内存数据库、大数据分析和相关软件可以从该加速器中受益。该加速器旨在通过将存储移动到更靠近 CPU 的位置来减少从存储访问数据的寻道时间。利用一维线性结构进行列式数据存储,并支持围绕输入数据的压缩/解压缩和加密/解密操作。IAA 加速器还支持各种过滤操作、CRC64 和预取地址转换。
从软件方面使用 IAA 是使用英特尔的查询处理库 (QPL) 完成的。QPL 与 Intel IDXD 内核驱动程序连接。MOVDIR64B 和 ENQCMD(S) 指令支持也需要大约过去两年的编译器。对于那些使用 QPL 库来利用 IAA 加速器的人来说,该库还有使用 AVX2/AVX512 的软件回退实现,用于在运行时软件可能未在具有 IAA 的服务器上运行或无法访问国际航空协会。
IAA 在许多方面与 DSA 加速器相似,但缺少批处理,它是无状态设备,没有域间功能和其他操作功能差异。
英特尔数据流加速器 (DSA) – 对于数据分析和分布式存储,DSA 加速器开始发挥作用。数据流加速器可以说是 Sapphire Rapids中最令人兴奋和最受期待的加速器块。DSA 是一种高性能数据复制和转换加速器,与易失性内存、持久内存、MMIO 之间的数据复制和转换加速器,DSA 取代了英特尔现有的 QuickData 技术。
这篇概述文章主要关注 IAA 和 DSA 加速器的软件支持方面。
你有多少个加速器?
根据您的第 4 代 Xeon 可扩展 SKU,您可能只选择了加速器、数量有限或根本没有启用。如果您运行的 SKU 依赖于新的 Intel On Demand 来激活加速器,则有一个新的内核驱动程序,但不是今天文章的重点,因为我还没有遇到具有此限制的硬件。自 Linux 5.18 以来,软件定义的硅驱动程序作为“随需应变”最初被称为……但只有在即将推出的 Linux 6.2 内核中,Intel On Demand 驱动程序现在才准备好采取行动。SDSi 参考现在反映了 Intel On Demand 品牌,并且围绕新 GUID 进行了驱动程序更改,支持读取 On Demand 仪表证书,以及其他更改。
加速器的数量因 SKU 而异。
除了需要启用“INTEL_SDSI”Kconfig 选项以启用 Intel On Demand 内核驱动程序之外,您还需要处理来自用户空间的 On Demand 证书。SDSi 驱动程序通过 sysfs 公开功能状态和证书。用户空间接口通过GitHub 上的 intel-sdsi记录。我没有更多信息要在这里添加有关 Linux 的按需功能激活的用户空间处理的信息——或者任何方便的用户空间实用程序的知识来处理实际的功能购买/激活——因为它也取决于原始设备制造商与客户协商/销售按需激活等。我们将及时看到这一切如何发挥作用。
IDXD 内核驱动程序
自 2019 年以来,英特尔一直致力于开发IDXD 内核驱动程序作为数据加速器驱动程序,以在 Linux 下启用加速器支持。该驱动程序已返回 Linux 5.6 的主线,但只有 Linux 5.18+ 才具有软件队列支持和其他功能/改进。所以如果想使用主线 IDXD 驱动,建议使用 Linux 5.18 或更新版本。
除了通过“INTEL_IDXD*”Kconfig 选项构建此驱动程序之外,还必须启用英特尔 IOMMU 以及英特尔 IOMMU 可扩展模式支持。本周我在加速器测试中遇到的一个问题最初是在使用 accel-config 时(在本文后面记录的)我在尝试启用工作队列时遇到错误。在深入研究英特尔文档后,我发现了 INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON 和 INTEL_IOMMU_DEFAULT_ON 也应该作为内核配置的一部分启用的通知…我的测试使用的是 Ubuntu 主线内核 PPA,其中那些默认选项未启用。但幸运的是,您不需要重建内核:如果遇到 accel-config 错误或找不到工作系统,intel_iommu=on,sm_on满足 IOMMU 周围 DSA 驱动程序要求的参数。我预计其他人可能会被这个以及 access-config 输出没有帮助或者例如没有主动扫描 Kconfig 配置简单地让用户知道它可能是罪魁祸首——我在仔细阅读文档后才意识到。
如果您的系统上存在 IDXD 内核驱动程序,则可以通过查看dmesg输出中“英特尔(R) 加速器设备”周围的行或仅查看“idxd”匹配项来找到加速器支持的初始指示器。当遇到支持加速器并加载了 IDXD 驱动程序的 Linux 服务器时,您应该在/sys/bus/dsa/devices/dsa*下找到每个加速器设备的目录。