Instruments和iprofiler都能够使用性能计数器(PMC)来监控应用程序性能。但是,我想知道是否有一个API来从应用程序访问PMC。在Linux中,这可以通过调用sys_perf_event_open
,然后从系统调用返回的文件描述符中读取来完成。或者,也可以使用libpfm。
对于OS X,我找到了Intel Performance Counter Monitor。不幸的是,它需要安装内核模块。该模块未签名,因此可能不会直接为最终用户加载它。
鉴于Instruments和iprofiler实际上都能够访问PMC(没有安装任何内核模块),我想知道是否有一些(未列出的)API来访问PMC。
答案 0 :(得分:0)
我不知道任何正式的API或预制库,但是RDMSR和RDTSC是安全性至关重要的操作码,因此仅限于ring 0,因此您将需要编写OSX内核模块来公开它。只需注意,将此类模块包含在最终用户应用程序中将使其变成安全隐患。因此,我并不感到惊讶,苹果和英特尔避免提供简单的“在此处输入管理员密码”访问权限。