You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Intel CPU跨NUMA节点L3缓存一致性实际表现及规范依据问询

关于跨NUMA节点L3缓存行为的规范依据查询

我做了一个双线程测试:一个线程循环访问本地NUMA节点上的32MB数组,另一个线程从远程NUMA节点访问该数组。从测试结果来看,远程NUMA节点的数据似乎不会被缓存到本地L3缓存,只能通过REMOTE_DRAM和REMOTE_CACHE_FWD提供服务。

我猜测跨NUMA节点的L1/L2缓存实现了总线监听,但L3缓存未实现。Intel SDM中有“cross package snoop”和“remote cache”相关表述,但没有详细定义。想咨询:哪里能找到验证该测试结论的详细规范或依据?


测试环境

  • Intel(R) Xeon(R) Gold 6238R CPU @ 2.20GHz
  • 2个NUMA节点
  • L3缓存大小:38 MiB

Intel SDM中REMOTE_DRAM和REMOTE_CACHE_FWD的说明

Intel SDM中REMOTE_DRAM和REMOTE_CACHE_FWD说明


perf stat测试结果

1. 本地访问

Performance counter stats for process id '2482844':

               112      mem_load_l3_miss_retired.remote_dram                                     (48.94%)
                97      mem_load_l3_miss_retired.remote_fwd                                     (65.96%)
           2166976      LLC-load-misses           #   41.82% of all LL-cache hits     (65.96%)
           5181401      LLC-loads                                                     (67.76%)
               678      node-load-misses                                              (34.04%)
           2036055      node-loads                                                    (32.24%)

       1.308500500 seconds time elapsed

2. 远程访问

Performance counter stats for process id '2482844':

           1143866      mem_load_l3_miss_retired.remote_dram                                     (49.40%)
           2920330      mem_load_l3_miss_retired.remote_fwd                                     (66.31%)
          18063660      LLC-load-misses           #   45.68% of all LL-cache hits     (66.68%)
          39543836      LLC-loads                                                     (67.08%)
           4500262      node-load-misses                                              (33.32%)
          13366604      node-loads                                                    (32.92%)

       2.331103404 seconds time elapsed

3. 停止本地循环访问线程后的远程访问

Performance counter stats for process id '2482844':

           6171182      mem_load_l3_miss_retired.remote_dram                                     (48.65%)
               124      mem_load_l3_miss_retired.remote_fwd                                     (65.77%)
           6350280      LLC-load-misses           #   76.26% of all LL-cache hits     (66.19%)
           8326881      LLC-loads                                                     (67.51%)
           6076443      node-load-misses                                              (33.81%)
              1480      node-loads                                                    (32.49%)

       1.399664053 seconds time elapsed

验证结论的规范与依据来源

  1. Cascade Lake-SP架构优化指南
    你使用的Xeon Gold 6238R属于Cascade Lake-SP架构,Intel官方发布的《Cascade Lake-SP Optimization Guide》中,详细说明了该架构下NUMA节点的缓存一致性机制、跨包窥探规则,以及L3缓存的远程访问行为,会明确L3是否参与跨NUMA节点的缓存共享。

  2. Intel SDM 核心章节补充解读
    Intel SDM(软件开发者手册)的第3卷第11章(缓存控制与一致性)、第8章(多处理器管理)中,虽未直接定义remote cache,但结合NUMA窥探机制的描述,可以梳理出跨节点缓存的行为逻辑。另外第19章(性能监控事件定义)会明确mem_load_l3_miss_retired.remote_dram和mem_load_l3_miss_retired.remote_fwd的触发场景,间接验证你的测试结论。

  3. Intel架构优化参考手册
    编号为248966的《Intel Architecture Optimization Reference Manual》中,有专门章节讲解NUMA优化、缓存一致性域划分,会明确L1/L2/L3在跨NUMA节点访问时的行为边界——比如L3属于本地节点私有共享缓存,跨节点访问时不会被缓存,只能通过远程DRAM或缓存转发获取数据。

测试数据佐证

从你的perf结果可以看出:

  • 远程访问时mem_load_l3_miss_retired.remote_fwd数值极高,说明大部分请求依赖远程节点缓存转发,而非将数据缓存到本地L3;
  • 停止本地线程后,remote_fwd骤降、remote_dram大幅上升,说明本地线程的循环访问维持了数据在远程缓存中的有效性,但远程节点不会将数据同步到本地L3;
  • 远程访问的LLC-loads数远高于本地,LLC-load-misses占比接近本地,进一步说明本地L3未缓存远程数据,每次访问都需发起跨节点请求。

内容的提问来源于stack exchange,提问作者pleiadesian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 09:33:21