> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs-staging.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用工具分析性能

使用以下分析工具检查系统性能：

* [函数跟踪器（ftrace）](#function-tracer-ftrace)：调试和分析延迟及性能问题
  > **注意**
  >
  > 要启用 ftrace，请确认 `arch/arm64/configs/qcom.config` 中的内核配置 `CONFIG_FTRACE` 已设置为 `y`。如果未设置，ftrace 将无法工作。
* [LTTng](#linux-trace-toolkit-next-generation-lttng)：同时跟踪 Linux 内核和用户空间
* [Trace Compass (Eclipse)](#trace-compass-by-eclipse)：以图形方式可视化性能问题
* [Qualcomm Profiler CLI](#qualcomm-profiler-cli)：在 Qualcomm SoC 上对应用程序扩展进行性能分析和优化
* [Perf 实用程序](#perf-utility)：评估 Linux 中的性能监控单元（PMU）计数器
* [Systemd-analyze](#systemd-analyze)：分析和调试 Linux 中的系统引导性能

## **函数跟踪器（ftrace）**

该工具可深入了解内核的运行情况。[Function Tracer](https://www.kernel.org/doc/html/v4.17/trace/ftrace.html) 可用于调试或分析延迟和性能问题。函数跟踪器作为一种跟踪工具，用于收集内核空间跟踪数据以供分析。

要收集 ftrace，请执行以下操作：

<Note>
  以下步骤中指定的命令应在设备上运行。
</Note>

1. 要启用跟踪事件，请从 SSH shell 在设备上运行以下命令：
   ```text theme={null}
   mount -t debugfs none /sys/kernel/debug
   ```
   ```text theme={null}
   echo 0 > /sys/kernel/tracing/tracing_on
   ```
   ```text theme={null}
   echo 25600 > /sys/kernel/tracing/buffer_size_kb
   ```
   ```text theme={null}
   echo "" > /sys/kernel/tracing/set_event
   ```
   ```text theme={null}
   echo "" > /sys/kernel/tracing/trace
   ```
2. 要查看可用事件，请运行以下命令：
   ```text theme={null}
   cat /sys/kernel/tracing/available_events
   ```
3. 要启用所需事件（例如调度器跟踪），请运行以下命令：
   ```text theme={null}
   echo 1 > /sys/kernel/tracing/events/sched/sched_wakeup_new/enable
   ```
   ```text theme={null}
   echo 1 > /sys/kernel/tracing/events/sched/sched_waking/enable
   ```
   ```text theme={null}
   echo 1 > /sys/kernel/tracing/events/sched/sched_switch/enable
   ```
4. 要了解已设置的事件，请运行以下命令：
   ```text theme={null}
   cat /sys/kernel/debug/tracing/set_event
   ```
5. 要开始跟踪，请运行以下命令：
   ```text theme={null}
   echo 1 > /sys/kernel/tracing/tracing_on
   ```
6. 运行用例。
7. 运行用例后，要停止跟踪，请运行以下命令：
   ```text theme={null}
   echo 0 > /sys/kernel/tracing/tracing_on
   ```
8. 要保存跟踪数据，请运行以下命令：
   ```text theme={null}
   cat /sys/kernel/tracing/trace > /opt/ftrace.txt
   ```
9. 要将 ftrace 从目标设备拉取到主机，请使用安全复制协议（SCP）或类似工具。确保在命令中指定目标 IP 地址。以下是在主机上运行的示例命令：
   ```text theme={null}
   scp -r root@10.92.162.185:/opt/ftrace.txt /local/mnt/workspace/logs
   ```

## **Linux Trace Toolkit next generation (LTTng)**

LTTng 是一款开源跟踪工具。它用于同时跟踪 Linux 内核和用户空间。

有关更多信息，请参阅 [LTTng Documentation](https://lttng.org/docs/v2.13/)。

## **Eclipse 的 Trace Compass**

Trace Compass 是一款开源工具，可提供用于分析性能问题的图形视图。

它可以解析多种类型的跟踪数据（包括 ftrace 和 LTTng），并可视化以下内容：

* 内核资源
* 内核控制流
* 用户空间标记

Trace Compass 是一个主机应用程序，需要 Java 虚拟机才能在主机上运行。

有关更多信息，请参阅 [Eclipse Trace Compass](https://projects.eclipse.org/projects/tools.tracecompass)。

要下载 Trace Compass，请参阅 [Eclipse Trace Compass - Downloads](https://projects.eclipse.org/projects/tools.tracecompass/downloads)。

## **Qualcomm Profiler CLI**

Qualcomm Profiler 是一款性能分析工具，用于识别、衡量和优化 Qualcomm 片上系统（SoC）上应用程序扩展的改进机会。它支持 CPU、GPU、aDSP、cDSP、用户空间进程、内存和 I/O 分析指标。

有关如何使用 Qualcomm Profiler 工具的详细信息，请参阅 [Qualcomm Profiler User Guide](https://docs.qualcomm.com/bundle/publicresource/topics/80-54323-2/introduction.html)。

要在主机上下载 Qualcomm Profiler 工具，请执行以下操作：

1. 下载并安装 [Qualcomm Software Center](https://softwarecenter.qualcomm.com/)。
2. 启动 Qualcomm Software Center，搜索 Qualcomm Profiler 并下载。

## **Perf 实用程序**

Perf 实用程序是 Linux 中的一款开源性能分析工具，用于监控 PMU 计数器。它用于获取函数调用堆栈。它是 Qualcomm<sup>®</sup> Linux<sup>®</sup> 构建的一部分。

有关更多信息，请参阅 [perf: Linux profiling with performance counters](https://perfwiki.github.io/main/)。

要运行 perf 实用程序，请在设备上运行以下命令：

```text theme={null}
perf --help
```

## **systemd-analyze**

Systemd-analyze 是一款命令行工具，用于分析和调试 Linux 中的系统引导性能。它测量引导时间里程碑，并分析不同层（例如内核、用户空间平台和服务）的瓶颈。Yocto 系统配方默认包含 systemd-analyze 工具。

有关更多信息，请参阅 [systemd-analyze — Analyze and debug system manager](https://www.freedesktop.org/software/systemd/man/latest/systemd-analyze.html)。

`systemd-analyze` 二进制文件默认包含在 Qualcomm<sup>®</sup> Linux<sup>®</sup> 构建中。

## **后续步骤**

* [配置 CPU、GPU 和内存](./configure-cpu-gpu-and-memory)
