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  节点的向量写操作增加了向量
                 创建延迟. 探测阶段实现本地化向量连接操作.
   448   449   450   451   452   453   454   455   456   457   458