为什么在不使用 perf 时调用 amd_pmu_v2_handle_irq?

问题描述 投票:0回答:1

amd_pmu_v2_handle_irq 应用于处理 AMD 处理器中的 PMU 溢出。当我在系统中使用

perf top -ag
时,它被大量调用。

但是当我使用

perf stat -a
命令时,对该函数的调用较少,这是为什么呢?为什么当我不使用任何 perf 命令时,相关调用的数量非常少?

linux-kernel perf amd-processor
1个回答
0
投票

您的系统是否启用了 NMI 看门狗定时器?它对计数器进行编程以不频繁地引发中断。检查您的

dmesg
是否有
NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.

该消息是我在 Skylake 上的 Linux 6.5 上看到的,之前我的

kernel/nmi_watchdog = 0
配置文件中的
sysctl
禁用了它,因此每个逻辑核心的所有四个可编程计数器均可用。


回复:

perf stat -a
不需要很多中断:整个时间间隔内的总计数不需要统计采样。它可以在尽可能宽的溢出限制下进行编程。当它想要在最后收集数据时,它可以从每个 PMU 计数器中读取计数(并将其添加到沿途收集的
max * overflows
中)。仅当事件超出 PMU 计数器可容纳的范围时才需要发生中断。

但是

perf top
就像
perf record
一样,编程计数器,因此它们经常溢出,因此它可以每次记录一个(进程/程序计数器)样本。这使得它每隔几秒就可以显示出整个过程中的热点,而不仅仅是最后的总计数,如
perf stat

perf stat
的侵入性较小,根本不会中断正在分析的代码。 (
perf stat -I 1000
每 1000 毫秒收集一次计数器值,但仍然不需要知道每个间隔内发生了什么。)

© www.soinside.com 2019 - 2024. All rights reserved.