商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 如何检查 Linux 内核性能计数器是否激活

如何检查 Linux 内核性能计数器是否激活

  发布于2026-08-19 阅读(0)

扫一扫,手机访问

介绍

在这个实验中,你将学习如何检查 Linux 中内核性能计数器 (kernel performance counters) 是否处于活动状态。你将探索如何使用 CODE0 命令来测量命令执行的性能计数器,验证 CODE1 文件系统内的性能计数器配置,并使用 CODE_2 检查内核日志中与性能计数器相关的消息。通过这个实践经验,你将掌握诊断和了解 Linux 系统上性能监控状态的技能。

使用 perf stat 检查计数器

在这一步中,你将学习如何使用 CODE_0 命令来测量性能计数器。性能计数器是特殊的硬件寄存器,用于统计 CPU 内发生的特定事件,例如执行的指令数量、缓存未命中次数或分支预测情况。

CODE0 工具是 Linux 中用于性能分析的强大命令行实用程序。CODE1 用于运行一个命令,并收集该命令执行过程中的性能计数器统计信息。

让我们从运行一个简单的命令并观察其性能计数器开始。我们将使用 CODE_0 命令,该命令用于列出目录内容。

如果你还没有打开终端,请打开它。你可以在桌面左侧找到 Xfce Terminal 图标。

现在,输入以下命令并按回车键:

perf stat ls

你应该会看到类似于以下的输出:

```plaintext
Performance counter stats for 'ls':

任务耗时(毫秒) ## 所用CPU
上下文切换次数 ## /秒
CPU迁移次数 ## /秒
页面错误次数 ## /秒
周期数 ## GHz
指令数 ## 每周期指令数
分支数 ## 占总指令数的百分比
分支丢失数 ## 占总分支数的百分比

msec task-clock ## CPUs utilized

```

具体的数字和事件可能会因系统和具体执行情况而异,但你应该会看到在执行 CODE_0 命令期间的一系列性能事件及其计数。

你可能会看到的一些常见事件包括:

  • CODE_0:任务在 CPU 上运行的总时间。
  • CODE_0:花费的 CPU 周期数。
  • CODE_0:执行的指令数量。
  • CODE_0:分支预测错误的次数。

理解这些计数器可以帮助你识别代码或系统中的性能瓶颈。

你还可以对更复杂的命令甚至脚本运行 CODE_0 来分析其性能。

例如,让我们尝试对一个简单的 CODE0 命令运行 CODE1

perf stat sleep 1

这将在系统休眠 1 秒时测量性能计数器。输出将显示 CODE_0 进程的计数器。

尝试对不同的命令运行 CODE_0,看看计数器如何变化。

点击 Continue 进入下一步。

验证 /sys/kernel 中的计数器配置

在这一步中,你将探索 Linux 内核的 CODE0 文件系统是如何展示性能计数器配置的。CODE1 文件系统提供了一个访问内核数据结构的接口,允许你查看,有时还能修改内核参数。

性能计数器的设置,例如非特权用户是否可以访问原始性能计数器事件,通常是通过 CODE_0 目录下的文件来控制的。

让我们导航到相关目录并查看一个配置文件。

首先,使用 CODE0 命令将当前目录更改为 CODE1。记住,你的默认目录是 CODE_2,所以你需要使用绝对路径。

输入以下命令并按回车键:

cd /sys/kernel/perf_event

现在你已进入 CODE0 目录。你可以使用 CODE1 命令查看该目录下的文件:

ls

你应该会看到一个文件列表,可能包括:

kptr_restrict  perf_event_paranoid  sysfs_deprecated

我们感兴趣的文件是 CODE_0。这个文件控制着非特权用户对性能事件的访问级别。数值越低表示限制越少(访问权限越高),数值越高表示限制越多(访问权限越低)。

让我们使用 CODE_0 命令查看这个文件的内容:

cat perf_event_paranoid

输出将是一个单独的数字,通常在 -1 到 2 之间。

以下是不同数值的一般含义:

  • CODE0:允许所有用户使用所有 CODE1 功能。
  • CODE0:允许所有用户使用 CODE1 进行进程级和 CPU 级的测量。
  • CODE0:仅允许特权用户(如 root)使用 CODE1 进行进程级和 CPU 级的测量。
  • CODE0:仅允许特权用户使用 CODE1 进行进程级的测量。

出于安全考虑,默认值通常为 2,以防止非特权用户可能利用性能计数器获取其他进程的信息。

了解这个文件有助于你了解系统在性能监控访问方面的配置情况。

点击 Continue 继续。

检查 dmesg 中的计数器日志

在这一步,咱们来了解一下如何运用CODE0命令查看内核消息。这些消息有时会包含与性能计数器或CODE1事件相关的信息哦。CODE_2这个命令呢,是专门用来显示内核环形缓冲区消息的。要知道,这些消息可是内核在启动和运行期间生成的,其中包含了对调试和系统分析非常有价值的信息呢。

虽然 CODE_0 本身通常会直接将统计信息输出到终端,但内核与性能监控硬件的交互或任何相关问题可能会记录在内核环形缓冲区中。

要查看内核消息,请使用 CODE_0 命令:

dmesg

这可能会在你的终端上输出大量内容,显示内核环形缓冲区中的所有消息。

要查找与 CODE0 或性能计数器特别相关的消息,你可以将 CODE1 的输出通过管道传递给 CODE2 命令。CODE3 是一个使用模式搜索文本的强大工具。

让我们搜索包含“perf”这个词的消息:

dmesg | grep perf

这个命令的作用如下:

  • CODE_0:输出内核消息。
  • CODE_0:这是一个管道符号,它将左边命令的输出作为输入传递给右边的命令。
  • CODE_0:在输入中搜索包含“perf”这个词的行。

你可能会看到类似以下的输出(或者根据最近的内核事件,可能什么都看不到):

[] perf: interrupt took too long ( >  ms), lowering kernel.perf_event_paranoid to 

这个示例消息表明性能中断花费的时间过长,内核自动将 CODE_0 设置(我们在上一步中看到过)调整为限制较少的值,以可能缓解这个问题。

你还可以搜索其他相关术语,如“performance”或“counter”:

dmesg | grep performance
dmesg | grep counter

查看 CODE_0 的输出有助于诊断与性能监控相关的问题,或者了解内核如何与性能计数器硬件进行交互。

点击 Continue 完成本次实验。

总结

在本次实验中,你学习了如何检查 Linux 内核性能计数器是否处于激活状态。你首先使用 CODE0 命令为像 CODE1 这样的简单命令测量性能计数器,观察各种性能事件的输出及其计数。这展示了 CODE_2 工具在性能分析方面的基本功能。

接着,实验引导你验证 CODE0 文件系统中的性能计数器配置,并在 CODE1 输出中查看与计数器相关的日志。这些步骤提供了确认系统对内核性能计数器的支持和激活状态的方法,除了 CODE_2 命令之外,还提供了评估其可用性的其他途径。

本文转载于:https://labex.io/zh/tutorials/linux-how-to-check-if-kernel-performance-counters-are-active-in-linux-558797 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注