你能举一个简单的例子吗?我知道存在特殊工具,但我希望将它集成到我的代码中。 我想收集一些统计数据。我还需要看看发生了什么不好的情况。
致以最诚挚的问候,
答案 0 :(得分:2)
您正在寻找的数据可能在您的处理器性能监控计数器(PMC)中可用,可以使用rdpmc
指令读取。然而,有一些主要的"陷阱"涉及他们,这都表明你不适合在你的代码中使用它们:
这些计数器的布局是特定于CPU型号的。每种型号的处理器都有一组不同的计数器。对一个模型正常工作的代码可能无法正常工作 - 除非您能够针对一大堆机器进行测试,否则您无法确定代码是否可靠运行。
性能计数器并不总是可供用户空间应用程序使用。某些操作系统不会在CR4中设置PCE位,这会导致rdpmc
在执行时抛出错误。你还没有提到你在这里使用的操作系统,所以我不能说这对你来说是不是一个问题。
表现计数器的内容非常深奥。即使我不太了解它们。你在这里提出的问题("读取X86命中错过缓存寄存器")表明你对架构的理解相对有限,所以你不太可能发现它们比我更有意义做。
除非您有非常令人信服的理由从您的应用程序中读取此数据,否则不要这样做。别管它们了。请改用专用的分析工具。