我在Haswell CPU(Intel Core i7-4790)上安装了perf . 但"perf list"不包括"stalled-cycles-frontend"也不包括"stalled-cycles-backend" . 我检查了http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html,但没有找到与表19-7(第4代英特尔酷睿处理器的处理器内核中的非架构性能事件)中的停顿周期后端相关的性能事件 .
所以我的问题是:如何使用Haswell CPU内核中的perf或其他工具来测量停滞循环后端 . 内核是3.19,perf版本也是3.19 .
谢谢
1 回答
是的,对于像Ivy Bridge或Haswell这样的新处理器,内核
perf_events
子系统中没有"stalled-cycles-frontend"和"stalled-cycles-backend"合成事件的映射 . 并且没有旧Core 2的映射 . 可能这个名称/概念/想法不适用于现代无序CPU的改变和复杂的微体系结构,而没有简单的全局"Stall"标量测量 .代码is in arch/x86/events/intel/core.c和合成事件名称是
PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
和PERF_COUNT_HW_STALLED_CYCLES_BACKEND
:两者都是自Nehalem以来为Westmere,Sandy Bridge定义的:
只为Ivy Bridge定义了前端档位
对于最近的CPU桌面(Haswell,Broadwell,Skylake,Kaby Lake)和Phi(KNL,KNM),没有前端和后端停顿的映射:
也没有为旧的Core2定义(没有检查Atoms):
http://elixir.free-electrons.com/linux/v4.11/source/arch/x86/events/intel/core.c#L27