2012-12-17 47 views
4

假设我选择了perf事件instructionsLLC-load-misses,LLC-store-misses。进一步假设我测试一个程序prog变化它的输入。是否valgrind应该给我相同的输入和相同计数器的“相同”功能结果?也就是说,如果perf中的一个值上升,valgrind中的值应该始终保持不变? valgrind是否会影响我在分析我的代码时应该注意的模拟?Valgrind与Linux性能相关

编辑:BTW,之前人们烧烤我没有尝试自己,我不得不说,我(有点)有,问题是,我有一个的SandyBridge处理器,并perf有一个“错误”,防止我从测量LLC- *事件。有一个补丁,但我不觉得像我重新编译内核...

回答

5

嘛,Cachegrind是一个缓存模拟器。尽管它试图模仿你的一些硬件特性(缓存大小,关联性等),但它并没有模拟你系统的每一个特性和行为。因此,您可能会在某些情况下看到一些差异。

例如,Valgrind的的doc指出:“Cachegrind模拟旨在为典型的2004年左右的主流台式机/服务器处理器的分支预测器”。 Sandy Bridge处理器在2011年首次出现,您可以猜测自2004年以来,分支预测器已经有了很大的改进。

这就是说,Valgrind仍然是您工具箱中的绝佳工具。

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

+0

似乎perf无法访问我版本的SandyBridge中的LLC计数器。我得到这个:http://comments.gmane.org/gmane.linux.kernel.perf.user/899,虽然有几年了,但这是相关的:http://lwn.net/Articles/430100/ –

+0

哦,我不知道这个错误。但是我再次尝试,现在的内核似乎不再是问题(但是我不知道何时合并了这个修复) – fireboot