HTM (硬件追踪宏)

Athira Rajeev,2025 年 3 月 2 日

基本概述

H_HTM 被用作执行硬件追踪宏 (HTM) 功能的接口,包括 HTM 数据的设置、配置、控制和转储。要使用 HTM,需要设置 HTM 缓冲区,并且可以使用 H_HTM hcall 来控制 HTM 操作。可以在分区内部为系统中的任何内核/芯片调用此 hcall。为了使用此功能,在 /sys/kernel/debug/powerpc 下提供了一个名为 “htmdump” 的 debugfs 文件夹。

HTM debugfs 使用示例

#  ls /sys/kernel/debug/powerpc/htmdump/
coreindexonchip  htmcaps  htmconfigure  htmflags  htminfo  htmsetup
htmstart  htmstatus  htmtype  nodalchipindex  nodeindex  trace

每个文件的详细信息

  • nodeindex、nodalchipindex、coreindexonchip 指定配置 HTM 的分区。

  • htmtype:指定 HTM 的类型。支持的目标是 hardwareTarget。

  • trace:用于读取 HTM 数据。

  • htmconfigure:配置/取消配置 HTM。向该文件写入 1 将配置追踪,写入 0 将取消配置。

  • htmstart:启动/停止 HTM。向该文件写入 1 将启动追踪,写入 0 将停止追踪。

  • htmstatus:获取 HTM 的状态。这对于在每次操作后了解 HTM 状态是必要的。

  • htmsetup:设置 HTM 缓冲区大小。HTM 缓冲区的大小为 2 的幂。

  • htminfo:提供系统处理器配置详细信息。这对于理解 nodeindex、nodalchipindex、coreindexonchip 的适当值是必要的。

  • htmcaps:提供 HTM 功能,如最小/最大缓冲区大小、HTM 支持的追踪类型等。

  • htmflags:允许向 hcall 传递标志。目前支持控制 HTM 缓冲区的循环(wrapping)。

查看系统处理器配置详细信息

# cat /sys/kernel/debug/powerpc/htmdump/htminfo > htminfo_file

可以使用 hexdump 来解释结果。

要收集由 nodeindex 为 0、nodalchipindex 为 1 和 coreindexonchip 为 12 表示的分区的 HTM 追踪:

# cd /sys/kernel/debug/powerpc/htmdump/
# echo 2 > htmtype
# echo 33 > htmsetup ( sets 8GB memory for HTM buffer, number is size in power of 2 )

这需要 CEC 重启以分配 HTM 缓冲区。

# cd /sys/kernel/debug/powerpc/htmdump/
# echo 2 > htmtype
# echo 0 > nodeindex
# echo 1 > nodalchipindex
# echo 12 > coreindexonchip
# echo 1 > htmflags     # to set noWrap for HTM buffers
# echo 1 > htmconfigure # Configure the HTM
# echo 1 > htmstart     # Start the HTM
# echo 0 > htmstart     # Stop the HTM
# echo 0 > htmconfigure # Deconfigure the HTM
# cat htmstatus         # Dump the status of HTM entries as data

上述操作将设置 htmtype 和核心详细信息,随后执行相应的 HTM 操作。

读取 HTM 追踪数据

开始追踪收集后,运行感兴趣的工作负载。在所需的时间段后停止追踪收集,并读取追踪文件。

# cat /sys/kernel/debug/powerpc/htmdump/trace > trace_file

此追踪文件将包含工作负载执行期间收集的相关指令追踪。并可用作追踪解码器的输入文件以理解数据。

使用 HTM debugfs 接口的优势

现在可以在系统的任何分区内收集特定内核/芯片的追踪信息并对其进行解码。通过此功能,可以将一个小分区专门用于收集追踪数据并进行分析,从而为性能分析、软件调优或硬件调试提供重要信息。