perf通过硬件性能计数器来获取cache miss的信息。硬件性能计数器是处理器提供的特殊寄存器,用于记录不同类型的事件发生的次数。对于cache miss,perf会使用相应的计数器来记录缓存未命中的次数。 在x86架构中,perf使用的是指令计数器(Instruction Counter)和缓存计数器(Cache Counter)来统计cache miss。指令计数器记录了程...
在cache miss 过多的场景下,perf 能够评估程序对各级 cache 的访问次数和丢失次数。利用 perf stat 命令可以查看与 cache 相关的性能事件,如 L1-dcache-loads、L1-dcache-load-miss 等,了解 cache 的利用情况。如果发现 cache miss 率过高,可以进一步分析代码,优化数据访问模式以提高 cache 命中率。 对于内存 I...
Hardware Events: CPU的PMU(performance monitoring unit)触发的事件,也叫performance monitoring counters (PMCs),例如cpu-cycles、cache miss Software Events: 一些比较底层的软件event,例如缺页、timer(定时) Kernel Tracepoint Events: 内核中的tracepoint User Statically-Defined Tracing (USDT): 用户态的tracepoint ...
以cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。 因此让我们先来了解一下 perf 中能够触发采样的事件有哪些。 使用perf list(在root权限下运行),可以列出所有的采样事件 事件分为以下三种: 1)Hardware Event 是由 PMU 硬件产生的事件,比如 cache 命中,...
以cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在哪些程序代码中。如此等等。 因此让我们先来了解一下 perf 中能够触发采样的事件有哪些。 使用perf list(在root权限下运行),可以列出所有的采样事件
530,787 cache-misses 2.372003220 seconds time elapsed test2 [huangyk@huangyktest]$ perfstat-e cache-misses ./test2 Performance counter statsfor'./test2': 11,636 cache-misses 0.233570690 seconds time elapsed 可以看到,后者的cache miss数量相对前者有很大的下降,耗费的时间大概是前者的十分之一左右。
Hardware Events: CPU的PMU(performance monitoring unit)触发的事件,也叫performance monitoring counters (PMCs),例如cpu-cycles、cache miss Software Events: 一些比较底层的软件event,例如缺页、timer(定时) KernelTracepoint Events: 内核中的tracepoint
PMU 允许软件针对某种硬件事件设置 counter,此后处理器便开始统计该事件的发生次数,当发生的次数超过 counter 内设置的值后,便产生中断。比如 cache miss 达到某个值后,PMU 便能产生相应的中断。 捕获这些中断,便可以考察程序对这些硬件特性的利用效率了。
比如 cache miss 达到某个值后,PMU 便能产生相应的中断。 捕获这些中断,便可以考察程序对这些硬件特性的利用效率了。 Tracepoints Tracepoint 是散落在内核源代码中的一些 hook,一旦使能,它们便可以在特定的代码被运行到时被触发,这一特性可以被各种 trace/debug 工具所使用。Perf 就是该特性的用户之一。 假如您...
“根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文”,我们可以改变采样的触发条件使得我们可以获得不同的统计数据,例如 以时间点 ( 如 tick) 作为事件触发采样便可以获知程序运行时间的分布;以 cache miss 事件触发采样便可以知道 cache miss 的分布,即 cache 失效经常发生在...