Valgrind与Linux完全相关

Der*_*unk 5 valgrind perf cachegrind

假设我选择perf的事件instructions,LLC-load-misses,LLC-store-misses.进一步假设我测试一个prog 改变其输入的程序.是valgrind应该给我相同的输入和相同的计数器"相同"功能的结果吗?也就是说,如果一个值perf上升,那个值valgrind应该总是相同吗?valgrind在分析我的代码时,我应该注意模拟是否有任何影响?

编辑:BTW,在人们烧烤我没有试验自己之前,我不得不说我(有点)有,问题是我有一个Sandybridge处理器,并且perf有一个"错误"阻止我测量LLC-*事件.有一个补丁,但我不想重新编译我的内核......

fir*_*oot 5

好吧,Cachegrind是一个缓存模拟器.即使它试图模仿您的某些硬件特性(缓存大小,关联性等),它也不会模拟系统的每个功能和行为.因此,在某些情况下您可能会看到一些差异.

例如,Valgrind的文档指出"Cachegrind模拟的分支预测器是典型的2004年左右的主流桌面/服务器处理器".Sandy Bridge处理器最早出现在2011年,您可以猜测分支预测器自2004年以来已经有了很大的改进.

话虽如此,Valgrind仍然是您工具箱中的绝佳工具.

perf的LLC事件在Sandy Bridge处理器上有什么问题?我每天都在Sandy Bridge笔记本电脑上使用这些事件,它按预期工作(archlinux 64bits,linux 3.6).