如何测量L1,L2,L3缓存命中率和在OSX中未命中

时间:2015-12-17 02:40:43

标签: macos performance cpu-cache kernel-extension

我有一个C ++程序,我想通过检查CPU缓存的命中数和未命中数来量化它的性能。

最好的方法是什么?

我尝试使用Intel's Performance Counter Monitor,但它使用了在Yosemite上禁用的无符号内核扩展。我显然可以禁用检查以不加载未签名的kexts,但我不想沿着那条路走下去。

还有其他可能的方式我不知道吗?

2 个答案:

答案 0 :(得分:3)

您可以使用OS X启用未签名的内核扩展以后需要重新启动):

sudo nvram boot-args=kext-dev-mode=1

这样可以在您的计算机上启用开发人员模式,只要它支持Mac OS X 10.10(Yosemite),您就可以运行英特尔性能计数器监视器。

完成测试后不要忘记再次禁用(否则会出现安全问题):

sudo nvram boot-args=kext-dev-mode=0

据我所知,英特尔的工具远优于缓存研磨,因为它使用硬件中的实际计数器,而不是模拟CPU及其在软件中的缓存特性。

答案 1 :(得分:0)

如果您是Apple开发人员计划成员,原则上您可以申请kext签名证书,并自行签署kext。但是他们通常不会将它们移交给内部使用,建议您启用kext-dev-mode或禁用SIP(取决于版本)。另一个好的途径是要求英特尔提供其签名版本的kext!