Page 453 - 《软件学报》2025年第12期
P. 453
5834 软件学报 2025 年第 36 卷第 12 期
11. until i > R numaid _slice_length k
12. end for
13. probe 阶段
14. for thread k in all threads do
15. numaid ← get_numa_id(thread k )
16. start ← startoffset k in S numai 表
d
17. i ← 1, location ← i + start
18. sum ← 0
19. repeat
20. key ← S numaid .tuple[location].key
21. index ← (Hash(key) OR key)
22. sum ← sum + (pht numaid [index].payload OR pv numaid [index])
23. until i > S numaid _slice_length k
24. end for
25. return sum
2.4 NUMA 节点合并策略
与 x86 架构不同, ARM 处理器包含两个 NUMA 节点, 相同芯片内跨 NUMA 节点访问延迟远低于不同芯片
间跨 NUMA 访问延迟. NUMA 节点数量决定了不同 NUMA 节点上的复制及动态数据分区代价, 将芯片内
NUMA 节点合并使 NUMA 连接算法设计与 x86 保持一致, 减少算法设计的复杂度, 也可以极大地优化连接性能.
3 NUMA-conscious 连接实现技术
本文对比了 13 种 NUMA 优化连接算法, 深入探索不同的连接优化技术在不同 CPU 架构上的性能特征, 通过
性能分析为不同 NUMA 架构 CPU 平台的连接算法优化选择提供参考.
3.1 基准连接实现技术
基准连接算法为 NPO 算法、PRO 算法和向量连接算法. 默认的算法不考虑 NUMA 优化, 由操作系统分配线
程资源进行数据处理, 可能产生线程与数据所在 NUMA 点不一致的情况, 产生跨 NUMA 访问延迟. 算法提供了
NUMA 优化选项--basic-numa, 用于绑定线程访问相同 NUMA 节点内的数据, 降低跨 NUMA 访问延迟. 两种
NUMA 选项验证连接算法在 NUMA-oblivious 和 NUMA-conscious 模式下的性能差异, 可以进一步揭示不同连接
算法对 NUMA 优化的敏感性以及不同 CPU 架构上 NUMA 优化对连接算法性能的影响.
3.2 NUMA-conscious 连接算法汇总
表 3 显示了不同的连接算法. 除 3 个基准连接算法外, 其余算法均为本文面向 NUMA 架构设计的不同优化算
法实现, 覆盖了不同跨 NUMA 复制粒度和 NUMA 布局优化技术, 与 MJB 连接微基准结合给出完整负载下的连接
性能曲线, 可以量化对比任何算法在任一平台任何负载下具体的性能指标.
FRHNPO 连接算法为每个 NUMA 节点创建本地哈希表, 所有线程将记录并发地插入多个 NUMA 节点的哈
希表中, 使得在哈希表创建阶段跨 NUMA 节点的细粒度记录写操作延迟和哈希表并发访问控制延迟增加, 保证在
探测阶段每个 NUMA 节点只访问本地哈希表.
FRVVJ 连接算法在创建阶段在每个 NUMA 节点创建连接向量, 与 FRHNPO 不同之处在于每个 R 表记录映
射到唯一的向量位置, 消除了哈希表记录创建时的并发访问延迟, 细粒度跨 NUMA 节点的向量写操作增加了向量
创建延迟. 探测阶段实现本地化向量连接操作.

