macos - 在没有仪器的 OS X 上记录性能监视器计数器(PM 事件)的值

标签 macos profiling instruments

在Xcode的Instruments中,有一个工具叫Counters公开 CPU 提供的低级计数器信息,例如执行的指令数或缓存未命中数:

screenshot of Counters tool in Instruments

这类似于 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/

相关文章:

java - 分析 JVM : Committed vs Used vs free Memory

Java Flight Recorder - 查找文件描述符泄漏

ios - 如何使用 iOS 上的 Instruments 验证 TableView 中标签的名称?

linux - 如何使用mac终端将ctrl + p映射到vim sshd上的ctrl + space

macos - 连接耳机后能否将声音发送到扬声器?

r - 在 Mac 10.12.1 上安装 RQuantlib 包

c++ - MIPS 上 C++ 和汇编代码的微架构分析

memory-leaks - AVPlayer 的 init 方法是否存在泄漏?

objective-c - 使用多层时无法释放未使用的 CALayer 内存

.net - dotnet --version 给出 "the folder [/usr/local/share/dotnet/host/fxr] does not contain any version-numbered child folders"