在Xcode的Instruments中,有一个工具叫Counters公开 CPU 提供的低级计数器信息,例如执行的指令数或缓存未命中数:
这类似于 Linux 系统调用 perf_event_open
Linux 2.6.32 中引入。在 Linux 上,我可以使用 perf_event_open
然后开始/停止围绕我感兴趣的代码部分进行分析。我想在 OS X 上记录相同类型的统计信息:计算指令(等),某段代码采用,并以自动方式获取结果。 (我不想使用 Instruments GUI 来分析数据。)
是否有任何 API 允许这样做(例如:使用 dtrace 或类似的)?从一些搜索看来,私有(private) AppleProfileFamily.framework 可能具有必要的 Hook ,但尚不清楚如何链接或使用它。
最佳答案
在 GNU/Linux 中,我使用 Intel 的 PCM 来监控 CPU 利用率。我不确定这在 OSX 上是否能正常工作,但据我所知,源代码包含 MacMSRDriver 目录。我没有任何 OSX 设备,无论如何都不要测试它。
如果此源已在您的设备上编译,只需运行:
pcm.x -r -- your_program your_program_parameter
或者,如果您想要高级分析,请使用 pcm-core.x
,或者您可以基于 pcm-core.cpp
构建自己的代码
关于macos - 在没有仪器的 OS X 上记录性能监视器计数器(PM 事件)的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32536551/