Memory 计算对内存的读写访问次数

Memory 计算对内存的读写访问次数,memory,perf,numa,Memory,Perf,Numa,在Linux机器上,我需要计算进程执行的读取和写入访问内存(DRAM)的次数。机器具有NUMA配置,我正在使用numactl从单个远程NUMA节点绑定进程以访问内存。进程正在节点0的CPU上运行,正在访问节点1中的内存 目前,我使用来计算LLC load miss和LLC store miss事件的数量,作为对内存读写访问的估计。因为,我猜LLC未命中将需要通过内存访问来提供服务。该方法是否正确,即该事件是否相关?还有,是否有其他方法可以获取读取和写入访问信息 处理器:英特尔至强E5-4620

在Linux机器上,我需要计算进程执行的
读取
写入
访问
内存
(DRAM)的次数。机器具有NUMA配置,我正在使用
numactl
从单个远程NUMA节点绑定进程以访问内存。进程正在节点0的CPU上运行,正在访问节点1中的内存

目前,我使用来计算
LLC load miss
LLC store miss
事件的数量,作为对内存读写访问的估计。因为,我猜LLC未命中将需要通过内存访问来提供服务。该方法是否正确,即该事件是否相关?还有,是否有其他方法可以获取
读取
写入
访问信息

处理器:英特尔至强E5-4620
内核:Linux 3.9.0+

根据您的硬件,您应该能够访问位于内存端的性能计数器,以准确计算内存访问次数。在英特尔处理器上,这些事件称为非核心事件。我知道你也可以在AMD处理器上计算同样的事情

计数LLC未命中并不完全正确,因为某些事件(如硬件预取器)可能导致大量内存访问


关于硬件,不幸的是,您将不得不使用原始事件(在perf术语中)。perf无法概括这些事件,因为它们是处理器的具体信息,因此您必须查阅处理器手册,以找到事件的原始编码,以提供给perf。对于您的英特尔处理器,您应该参阅这些文档中提供的《英特尔软件开发人员手册》文档的第1章
8.9.8“英特尔至强处理器E5系列无核心性能监控工具”和
第19章性能监控事件
,您需要使用的处理器的确切ID
/proc/cpuinfo

添加了相关信息。我不确定哪些性能计数器与计算硬件预取器相关事件相关。