关于vtune的几个问题...

aoaoer 2010-12-02 11:14:14
我profile选择了BUS_TRANS_ANY和MEM_LOAD_RETIRED.L2_LINE_MISS两个event,然后发现在一个函数中L2 cache miss很多,hotspot显示的位置刚好在load一个volatile变量之后,我的问题是:

1. hotspot的显示位置是精确的么?sampling interrrupt之后保留下来的pc位置就是发生cache miss的那条memory指令么?

2. 如果hotspot的显示是精确的,我不能理解为啥这个函数会有这么多的cache miss,这个函数基本上就是个循环,spin在一个变量上等待其状态改变,照理说他们都应该spin在L1 cache上,如果有lock也只应该lock l1 cache line,循环很小,不可能是线程自己evict出去,虽然别的线程也会读取这个spin的变量,那也应该是MESI的share状态,没有道理l2 miss那么多,有什么可能的解释么?

3. 我的cpu是quad-core nehalem,运行4个线程,BUS_TRANS_ANY的统计对每个线程/core是准确的么?Vtune能够知道这次的bus transaction是哪个线程/core触发的?

4. 我的Vtune都没有LLC_MISS,MEM_UNCORE_RETIRED.LOCAL_DRAM之类的event,版本是9.1,内核是2.6.9-67.ELsmp #1 SMP,是版本的问题么?

谢谢解疑。。
...全文
110 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel_zhenyuwang 2010-12-08
  • 打赏
  • 举报
回复
一般来说是精确的,主要还是看汇编行。
最好使用最近的VTune9.1 U8
另外Intel 发布了VTune的升级版,VTune(TM) Amplifier XE 2011

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧