Ark*_*rka 10 profiler performancecounter tlb mmu
我想估计由于运行Linux的x86-64(Intel Nehalem)机器上的TLB未命中而导致的性能开销.我希望通过使用一些性能计数器得到这个估计.有没有人对什么是估计这个的最佳方法有一些指示?
谢谢Arka
Joh*_*pin 16
如果您可以访问基于"Westmere"的系统,则代码的性能特征应该与您在"Nehalem"上的性能特征非常相似,但您可以访问新的硬件性能计数器事件,该事件几乎可以测量您的内容想.
在Westmere上,等待处理TLB未命中时性能损失的最佳估计可能来自硬件性能计数器事件08H,掩码04H"DTLB_LOAD_MISSES.WALK_CYCLES",其被描述为计数"循环页面处理程序错误处理程序忙于页面由于第二级TLB中的负载未命中而行走"."英特尔®64和IA-32架构软件开发人员手册卷3B:系统编程指南,第2部分"(文档号:253669)中对此进行了描述,可从http://www.intel.com/content/www/在线 获取.我们/ EN /体系结构和技术/ 64-IA-32体系结构的软件开发者-VOL-3B-部分-2- manual.html
此事件必要的原因是TLB未命中处理时间由读取包含页表条目的高速缓存行所需的时间决定.如果该高速缓存行在L2高速缓存中,那么TLB未命中的开销将非常小(大约10个周期).如果该行在L3缓存中,那么可能是25个周期.如果该行在内存中,那么约200个周期.