Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从perf获取PEBS数据线性地址_Linux_Linux Kernel_X86_Perf - Fatal编程技术网

Linux 从perf获取PEBS数据线性地址

Linux 从perf获取PEBS数据线性地址,linux,linux-kernel,x86,perf,Linux,Linux Kernel,X86,Perf,我现在试着用perf来测量有PEB的L3_MissLLC Miss 下面是命令:perf record-d-ecpu/event=0xd1,umask=0x20/ppu-c1 test,当perf完成时,我使用perf脚本-F ip,sym,addr检查结果 根据第3B卷表18-55。PEBS记录包含一个名为Data Linear Address的字段,表示加载地址或存储目的地,这是我需要的 我的问题是,我在perf脚本中指定的字段addr与PEBS记录中的数据线性地址相同吗? 如果没有,如何检

我现在试着用perf来测量有PEB的L3_MissLLC Miss

下面是命令:perf record-d-ecpu/event=0xd1,umask=0x20/ppu-c1 test,当perf完成时,我使用perf脚本-F ip,sym,addr检查结果

根据第3B卷表18-55。PEBS记录包含一个名为Data Linear Address的字段,表示加载地址或存储目的地,这是我需要的

我的问题是,我在perf脚本中指定的字段addr与PEBS记录中的数据线性地址相同吗? 如果没有,如何检索此字段?以及另一个相关字段,如CPU寄存器R8~R15

另外,我正在使用i7-6700 CPU Skylake微体系结构


谢谢,任何建议都将不胜感激。

是的,你说得对。事实上,perf脚本中的addr字段在PEBS记录中为您提供了数据线性地址。正如您正确指定的,此数据线性地址与加载源或存储目标相关联。命令perf record-d中使用的开关-d有助于记录在内存中访问或写入的数据的线性地址

这种记录数据线性地址的机制从处理器微体系结构名Haswell开始,取代了精确的存储事件。它也一直延伸到天湖


如果您想在代码中看到这一点,。

是的,您是对的。事实上,perf脚本中的addr字段在PEBS记录中为您提供了数据线性地址。正如您正确指定的,此数据线性地址与加载源或存储目标相关联。命令perf record-d中使用的开关-d有助于记录在内存中访问或写入的数据的线性地址

这种记录数据线性地址的机制从处理器微体系结构名Haswell开始,取代了精确的存储事件。它也一直延伸到天湖


如果您想在代码中看到这一点,.

非常感谢,我知道了:我还有一个问题。。当性能记录完成时,它显示[性能记录:捕获并写入5.390 MB性能数据44025样本],但当我进入性能报告时,它显示样本:16K事件“cpu/event=0xd0,umask=0x81/ppu”事件计数约:16649000。为什么相同含义的计数器具有不同的值?我知道PEB每N个事件生成一个样本记录,并且perf报告中的数字:16K samples/16649000 events对于perf record-c 1000标志有意义。但是16K样本在perf.data中只生成44025个样本,这是不合逻辑的。嗨@KanielVenson,你能告诉我你运行的确切perf命令吗?如果你把它作为一个单独的问题提出来会更好,如果它解决了你的问题,请将我的答案设置为正确。非常感谢,我明白了:我还有一个问题。。当性能记录完成时,它显示[性能记录:捕获并写入5.390 MB性能数据44025样本],但当我进入性能报告时,它显示样本:16K事件“cpu/event=0xd0,umask=0x81/ppu”事件计数约:16649000。为什么相同含义的计数器具有不同的值?我知道PEB每N个事件生成一个样本记录,并且perf报告中的数字:16K samples/16649000 events对于perf record-c 1000标志有意义。但是16K样本在perf.data中只生成44025个样本,这是不合逻辑的。您好@KanielVenson,您能告诉我您运行的确切perf命令吗?如果您将此作为一个单独的问题提出会更好,如果它解决了您的问题,请将我的答案设置为正确。