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

AMD Zen 2(Rome)每通道内存流量追踪及NUMA节点归属排查

双路AMD EPYC 7H12的NUMA节点内存流量追踪方案

1. 利用perf结合AMD Data Fabric事件追踪NUMA级内存请求

AMD EPYC 7H12的Data Fabric PMU提供了可区分目标NUMA节点的内存请求事件,能直接定位LLC缺失对应的目标节点:

  • 先通过perf list amd_df列出所有Data Fabric相关事件,找到对应每个NUMA节点的内存请求事件(例如mem_req_to_numaX,X为0-7,对应系统8个NUMA节点)。
  • 运行perf命令统计工作负载向各NUMA节点发起的内存请求:
    perf stat -e amd_df::mem_req_to_numa0,amd_df::mem_req_to_numa1,amd_df::mem_req_to_numa2,amd_df::mem_req_to_numa3,amd_df::mem_req_to_numa4,amd_df::mem_req_to_numa5,amd_df::mem_req_to_numa6,amd_df::mem_req_to_numa7 -p <你的工作负载PID>
    
    输出结果会直接给出每个NUMA节点的内存请求数,对应工作负载在该节点产生的内存流量占比。

2. 单缓存缺失级别的NUMA节点定位

如果需要追踪每次LLC缓存缺失对应的目标NUMA节点:

  • 使用perf record采样LLC缺失事件并记录细节:
    perf record -e amd_l3::llc_miss -n -p <你的工作负载PID>
    
  • 用perf report分析采样数据,结合AMD PMU文档中事件的额外字段(如目标NUMA节点ID),即可定位单条缓存缺失请求的目标NUMA节点。部分版本的perf会直接在采样数据中解析出NUMA节点信息,若没有则需参考AMD官方的PMU编程手册映射字段。

3. 推算通道级工作负载流量占比

由于Data Fabric通道计数器是聚合值,可通过NUMA亲和性绑定间接拆分工作负载在对应通道的流量:

  • 每个NUMA节点对应一对内存通道,使用numactl --cpunodebind=X --membind=X <你的工作负载命令>将进程绑定到特定NUMA节点X。
  • 同时统计该NUMA节点的内存请求数(用步骤1的perf命令)和对应通道的聚合流量(Data Fabric计数器),计算两者的比值,即为工作负载在该通道的流量占比。
  • 依次对所有NUMA节点重复上述操作,即可得到所有通道的工作负载流量占比。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 11:44:58