Intel/AMD平台内存带宽监控工具计算方式、PMU及进制问询
Intel pcm-memory与AMD AMDuProf内存带宽监控相关问题解答
问题1:两款工具如何计算内存带宽使用率
pcm-memory(Intel平台)
- 通过捕获内存控制器上的实际读写字节总量,结合当前内存配置的理论最大带宽计算使用率。理论带宽公式为:
内存频率 × 总线位宽 / 8 × 内存通道数,使用率 =(实际传输字节数 / 理论带宽×监控时长)×100%。 - 支持细分本地NUMA节点、远程NUMA节点的内存访问带宽,分别计算不同场景下的使用率。
AMDuProf(AMD平台)
- 基于处理器内存性能计数器统计实际读写的字节总数,除以监控周期内的理论内存带宽(计算逻辑与Intel类似:
内存频率 × 位宽 /8 × 通道数)得到使用率百分比。 - 可按进程、线程、内存通道、NUMA节点等维度拆分带宽数据,精准定位带宽消耗来源。
问题2:它们采用了哪些PMU?
pcm-memory(Intel)
- 主要依赖Intel Uncore PMU中的内存控制器单元,核心事件包括:
UNC_M_TOTAL_BYTES.READ/UNC_M_TOTAL_BYTES.WRITE:直接统计内存读写的总字节数UNC_M_CAS_COUNT.RD/UNC_M_CAS_COUNT.WR:统计内存读写的CAS命令次数(间接反映访问量)- 跨NUMA场景下会用到UPI(Ultra Path Interconnect)相关的PMU事件,统计节点间的内存传输数据。
AMDuProf(AMD)
- 基于AMD内存控制器PMU及架构相关的性能计数器,核心事件包括:
MEM_BYTES_READ/MEM_BYTES_WRITTEN:直接统计内存读写字节数MEM_INST_RETIRED.ALL_LOADS/MEM_INST_RETIRED.ALL_STORES:统计内存读写指令数- Zen架构及以后的处理器,会用到CCD(Core Complex Die)级PMU和Infinity Fabric相关计数器,用于跨芯片/NUMA节点的内存访问统计。
问题3:GB/MB/KB的计算采用1024进制还是1000进制?
- pcm-memory:默认使用1024进制(1GB=1024MB,1MB=1024KB),可通过命令行参数
--si切换为1000进制(国际单位制)。 - AMDuProf:默认显示采用1024进制,部分新版本或系统级监控视图支持通过工具设置界面/命令行参数切换为1000进制。
- 注:如果需要统一使用1000进制,两款工具都可通过配置实现,但默认均以1024进制为主要显示方式。
内容的提问来源于stack exchange,提问作者Frontier_Setter
相关产品推荐
相关产品推荐

