首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态监控rdtsc的性能

动态监控rdtsc的性能
EN

Stack Overflow用户
提问于 2018-11-20 17:56:08
回答 1查看 182关注 0票数 0

有没有办法使用perf“实时”动态地监控汇编指令?我已经看到,如果我使用perf record /perf top,然后点击所记录的函数,我可以看到汇编指令,但我是否可以直接监控特定的汇编指令,例如,rdtsc或clflush,例如,在特定时间段内使用perf的进程调用它们的频率?

我在Skylake和Haswell上使用Debian 9。

代码语言:javascript
运行
复制
sudo uname -a 
Linux bla 4.9.0-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux

sudo /proc/config.gz

返回command not found

任何帮助/想法我们都很感激。

EN

回答 1

Stack Overflow用户

发布于 2018-11-22 11:33:25

是的,您当然可以构建一些动态采样在主机上运行的指令的东西。

基本思想是定期采样您感兴趣的进程(可能是“所有进程”),并检查采样指令指针周围的区域,以确定这样的采样必须已经执行的指令:例如,通过反汇编直到下一个条件分支,或者可能直到基本块的末尾。

重复这样做,您将获得已执行指令的直方图,然后您可以估计rdtsc或任何其他感兴趣的指令的运行频率。

这实际上并不困难:大多数逻辑已经存在于perf topperf recordperf report中:只需将来自perf top的采样代码与来自perf top和/或perf report的注释代码结合起来,如上所述。也许您甚至可以在事后执行此操作:使用perf record --all-cpus收集样本,然后运行perf script或以其他方式解析文件以监视指令。

每个示例只会给你提供一个小的执行指令窗口,所以如果你需要准确地捕捉偶然出现的rdtsc,这根本不会起作用。

你可以通过利用“最后一个分支记录”特性来扩展每个样本的“窗口”,基本上可以基于最近的分支回到过去,并分解所有这些基本块,这将使你的每个样本的覆盖范围扩大很多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53390392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档