【发布时间】:2015-12-08 18:53:38
【问题描述】:
在 Xcode 的 Instruments 中有一个名为 Counters 的工具,它公开了 CPU 提供的低级计数器信息,例如执行的指令数或缓存未命中数:
这类似于 Linux 2.6.32 中引入的 Linux 系统调用 perf_event_open。在 Linux 上,我可以使用 perf_event_open 然后围绕我感兴趣的代码部分开始/停止分析。我想在 OS X 上记录相同类型的统计信息:计算指令(等)某些代码需要,并以自动方式获得结果。 (我不想使用 Instruments GUI 来分析数据。)
是否有任何 API 允许这样做(例如:使用 dtrace 或类似的)?从一些搜索来看,私有 AppleProfileFamily.framework 可能有必要的钩子,但不清楚如何链接或使用它。
【问题讨论】:
-
这里一个可能的解决方案是使用英特尔 PMC kext 公开此信息 (campos.cc/blog/2014/03/15/…),但它似乎不提供每个进程的信息,只提供总计,这不太有用对我来说。
-
苹果工程师 Kris Markel 在 Twitter 上说:“目前没有可用的东西。请通过 bugreport.apple.com 提交增强请求。” (twitter.com/existopher/status/644943616889126912)
-
PAPI can be compiled on OS X。不幸的是,此平台不支持硬件计数器,仅支持软件事件。这使得它的用处大大降低。
标签: macos profiling instruments