You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux perf x86平台进程级cache-misses事件计数准确性问询

Intel x86下Perf统计特定进程L3缓存未命中的原理

在Intel x86系统中,cache-misses事件映射为LONGEST_LAT_CACHE.MISS,用于统计核心发起的可缓存请求未命中L3缓存的次数。针对你提出的问题,直接给出结论:

执行$ perf stat -e cache-misses -- ls时,统计的是进程ls自身产生的L3缓存未命中次数,而非系统全局的。

具体原因如下:

  • 上下文关联的事件过滤:虽然L3缓存属于uncore区域,对应的PMU是所有核心共享的,但Perf会结合CPU的调度机制,追踪目标进程的执行上下文。当ls进程在某个核心上运行时,Perf会通过硬件提供的过滤能力(比如基于CR3寄存器的地址空间标识,或者线程上下文切换事件),只统计该进程触发的L3未命中请求,自动排除其他进程、内核线程或空闲状态下的全局事件。
  • 进程运行时段的精准计数:Perf会监控目标进程的生命周期,只有当ls处于运行状态(占用CPU核心执行指令)时,才会对LONGEST_LAT_CACHE.MISS事件进行计数,进程休眠或被调度走的时段,不会统计该事件。
  • 硬件支持的基础:主流现代Intel处理器(Sandy Bridge及以后的架构)的uncore PMU都支持进程级的事件过滤,这是Perf实现精准统计的硬件基础。少数老款处理器可能存在限制,但这种情况非常少见。

验证方法

你可以通过对比两次执行结果来验证:

  1. 单独执行perf stat -e cache-misses -- ls,记录缓存未命中的数值;
  2. 在另一个终端持续运行高缓存压力的任务(比如dd if=/dev/zero of=/dev/null bs=1G),再次执行perf stat -e cache-misses -- ls。
    两次结果的差异会非常小,说明统计的是ls进程自身的开销,而非全局的缓存未命中。

内容的提问来源于stack exchange,提问作者Changbin Du

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:44:54