Page 455 - 《软件学报》2025年第12期
P. 455
5836 软件学报 2025 年第 36 卷第 12 期
和性能收益.
4 NUMA-conscious 连接性能评估
我们在实验部分测试了不同 NUMA-conscious 连接算法性能. 首先测试无 NUMA 优化和使用--basic-numa 优
化选项的 NPO 算法、PRO 算法和向量连接算法性能作为 NUMA-oblivious 和 NUMA-conscious 连接算法基准性
能, 对比不同架构 CPU 平台上连接算法对 NUMA 优化的性能收益和 NUMA 硬件敏感性. 通过 NUMA-conscious
连接算法性能测试揭示不同连接算法实现技术在不同 CPU 架构下的性能特征, 为数据库面向不同 CPU 架构的连
接算法优化选择提供依据.
4.1 硬件配置
实验使用了 5 台双路服务器, CPU 配置为具有代表性的 ARM、Intel 和 AMD 架构的 5 个处理器 (如表 1 所
示). 实验结果不仅能够展现 3 种不同架构 CPU 之间的性能特征与差异, 也能够展现相同架构不同代 CPU 之间的
性能变化, 展现 CPU 硬件技术发展对连接性能带来的影响. 配置 Intel 和 AMD 处理器的服务器运行 CentOS Linux
(内核版本为 4.18.0) 操作系统, ARM 处理器系统运行 Ubuntu Linux (内核版本为 4.19.9), gcc 版本为 7.3.1. 内存超
过 512 GB, 支持大数据内存连接测试负载. 测试时首先对连接负载进行预加载, 选择 5 次连续连接执行时间中去
掉预热执行时间后最短时间作为代表性的内存连接运行时间, 消除数据加载等系统开销对连接算法性能的影响
(连续执行时间相对稳定, 取最短时间最小化系统其他负载干扰).
4.2 基准连接性能
图 5 显示了 NPO 算法、PRO 算法和向量连接算法的基准性能. 虚线表示无 NUMA 优化的连接算法性能, 实
线表示使用--basic-numa 选项的 NUMA 优化连接算法性能, 面积图表示 NUMA 优化连接算法相对无 NUMA 优
化连接算法性能提升百分比. 通过性能测试观察到如下规律.
• NPO 连接算法性能对 NUMA 架构敏感度较高, NUMA 优化收益较其他两个连接算法更高. 当 R 表记录少
20
于 2 行时, 连接性能主要受 cache 的影响, NUMA 优化对性能的影响较小. 当 R 表较大时产生大量内存哈希表访
问, NUMA 延迟对连接的性能影响幅度逐渐增长. CXL(28) 平台上 NUMA 优化与无 NUMA 优化性能差异最小,
ICX(38)、Milan Zen3 平台上性能差异相似, Rome Zen2 较 Milan Zen3 有更大的性能差异, ARM(64) 的性能差异
最大. 不同 CPU 平台 NUMA 优化性能差异反映了表 2 跨 NUMA 访问延迟的规律, 说明 CPU 跨 NUMA 访问延迟
性能对数据库连接算法性能具有直接的影响.
• NUMA 优化与无优化 PRO 算法之间的差异相对 NPO 算法较小, NUMA 优化和无 NUMA 优化算法性能曲
线相对平滑且差异较为稳定. PRO 算法使用基于私有 cache 的分区连接优化技术, 无法使用 L3 cache 的优化资源
消减小表连接时的 NUMA 延迟. 从性能曲线来看, AMD 的 Milan Zen3 和 Rome Zen2 的性能曲线较 Intel CLX(28)
和 ICX(38) 更加接近, 性能差异较小.
• 向量连接算法在 NUMA 优化和无 NUMA 优化模式下的性能差异最小, 算法性能对 NUMA 架构敏感度最
低, 呈现出 NUMA-oblivious 性能特征. x86 的 4 个 CPU 平台上向量连接 NUMA 优化与无优化算法性能差异较小,
ARM 平台两种算法性能差异相对较大, 反映了 ARM 平台跨 NUMA 访问延迟较大, 对向量连接算法性能产生影
响. 相对于 NPO 算法, 向量连接算法使用更小的向量代替哈希表, 向量探测较哈希探测有更低的延迟和 CPU
cycle 消耗. 在性能曲线上与 NPO 算法相似, 但相对 NPO 算法有更高的 L3 cache 利用效率, 即使在向量超过 L3
cache 大小时仍有较低的访问延迟, cache 效率对向量连接算法性能的影响超过 NUMA 访问延迟.
综上所述, NUMA 延迟性能主要影响内存访问阶段, 在 PRO 算法中分区阶段涉及跨 NUMA 读写访问延迟,
可以通过 NUMA 节点内分区缓存批量写操作, 来进一步降低 NUMA 访问延迟. 在探测阶段则通过 in-cache 探测
消除 NUMA 访问延迟. NPO 算法和向量连接算法是 hardware-oblivious 算法, 即采用共享哈希表/向量的硬件自适
应连接算法, 但在 NUMA 优化性能上有较大的差异. NPO 算法是 NUMA 性能高敏感型连接算法, 而向量连接算

