perf 工具缺少arm_spe 事件

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

我是性能工具的新手。我在arm64上使用AlmaLinux 8.8。

我已经安装了 perf: 性能--版本 性能版本4.18.0-513.9.1.el8_9.aarch64

arm_spe 事件似乎丢失了:

性能列表 | grep -i arm_spe

如何启用或修复此事件?

https://man7.org/linux/man-pages/man1/perf-arm-spe.1.html

谢谢

谷歌搜索没有解决

events profiling arm64 perf
1个回答
0
投票

你尝试过什么

您已尝试列出性能事件,但没有提及 SPE,这意味着该功能丢失或未正确启用,使用:

perf list | grep -i arm_spe

1.通常的嫌疑人:

如果 perf 未显示 SPE 事件,则可能意味着您的计算机处于虚拟化状态(即不是裸机)和/或

kpti
功能未禁用。您必须在内核的引导参数中设置
kpti=off
(请参阅第 3 节)。

下面我提供了一些在 Ubuntu 上启用它的案例和示例命令。


2.检查内核是否支持SPE

您可以输入以下内容:

cat /boot/config-$(uname -r) | grep CONFIG_ARM_SPE_PMU

答案可能是:

  • y
    :已启用      (参见 2.a)
  • m
    :使用 LMK(参见 2.b)
  • n
    :禁用    (参见 2.c)

2.a 内核启用了 SPE

CONFIG_ARM_SPE_PMU=y
表示内核启用了SPE。如果不起作用,请检查常见的嫌疑人(第 1 节)。

2.b 内核通过 LMK 支持 SPE

CONFIG_ARM_SPE_PMU=m
表示 SPE 通过可加载内核模块 (LKM) 支持。

在这种情况下,如果您可以尝试以下操作:

# NOTE: on kernel updates you'll need to rerun the below
sudo apt install linux-modules-extra-$(uname -r)

或者,可以重新编译内核以支持 LMK,然后手动安装模块。

您可能需要禁用

kpti
(请参阅第 3 节)。

要检查模块是否已加载并获取更多信息,您可以尝试:

lsmod | grep arm_spe_pmu
modinfo arm_spe_pmu

2.c内核不支持SPE

CONFIG_ARM_SPE_PMU=n
表示您当前的内核是在没有 SPE 支持的情况下编译的。如果您的硬件支持 SPE,那么您可以重新编译一个新内核,将
CONFIG_ARM_SPE_PMU
设置为
y
m
,然后按照前面的步骤之一进行操作。为此,您必须遵循发行版的说明。

您可能需要禁用

kpti
(请参阅第 3 节)并使用裸机。


3.禁用
kpti

根据您的机器和内核,您可能需要禁用 kpti,前提是您愿意这样做。 另请注意,修改启动参数可能会意外地使您的计算机变砖。采取任何相关措施(即能够在启动时进行干预以恢复问题)。

示例说明:


sudo vim /etc/default/grub
# add the below:
GRUB_CMDLINE_LINUX="kpti=off"

# close vim, update config, and restart:
sudo update-grub
sudo reboot now

4.验证 SPE 是否正在运行:

除了列出性能事件之外,您还可以尝试使用以下方法检查相关输出:

sudo dmesg | grep -E 'kpti|spe'
© www.soinside.com 2019 - 2024. All rights reserved.