开发

如何使用 Meta Quest 开发者中心抓取 Perfetto 追踪记录

更新时间: 2026年4月17日
Perfetto 是一款功能强大的性能追踪工具,适用于多种引擎,与内置引擎分析工具相比,具有某些突出的优势。Perfetto 可提供调度活动等系统事件的信息,还可为与 Perfetto TrackEvent 插桩或 ATrace 集成的应用提供检测信息。
Perfetto 是 Systrace 的替代工具,可支持追踪更多事件、追踪更长时间,并且还支持追踪计数器。
Perfetto 可作为独立工具使用,也可通过 Meta Quest 开发者中心 (MQDH) 直接使用。该工具位于 MQDH 右上角的 Performance Analyzer 中,名为 Perfetto 追踪分析。在设备管理工具设备操作下,也可以找到该工具。
在开发阶段,如果需要了解复杂工作负载的运行时间、找到性能过热点或检查调用堆栈,建议使用 Perfetto。例如,您可以创建 Perfetto 时间线,用于追踪图形引擎内部更新的多个事件,为每一帧提供全面的时间线视图。借助 Perfetto,您还可以对调用堆栈进行抽样并获取火焰图,直观地了解抽样的堆栈追踪记录。

用例

Perfetto 可在与应用的性能配置文件相同的时间线上提供全面的系统进程和其他指标的视图。它还可以将用于调用 OVRPlugin 的函数直接映射到操作系统,便于更深入地了解各种 GPU 计数器和指标,从而更好地找出性能问题所在。
通过 MQDH 与 Perfetto 的集成,您可以配置和捕捉一般和自定义的 Perfetto 追踪记录,然后前往 Perfetto 站点并在新的浏览器窗口中打开这些记录。头戴设备上也会保存这些追踪记录,并且可供下载。

要求

如要安装 MQDH 以准备使用 Perfetto 集成,请按照 Meta Quest 开发者中心设置说明操作。
Perfetto 可能要求配置某些设置,具体取决于您的开发路径。Unity 和 Unreal Engine 等商业游戏引擎只传输 ATrace 检测记录,因此请配置 ATrace 类别ATrace 应用设置。方法是点击 Perfetto 追踪分析旁边的 ...,然后选择 Perfetto 设置
  • ATrace 类别:要追踪的 ATrace 类别列表。这些类别是指可能出现在许多应用中的事件。
  • ATrace 应用:待追踪 ATrace 应用列表。这是指已开启事件的应用。
ATRACE APPS FIELD
使用 Unity 和 Unreal Engine 的开发者以及使用 ATrace 事件的任何其他开发者必须在“ATrace 应用”字段中输入软件包名称,以便从 Perfetto 获取详细信息。一般来说,强烈建议所有开发者填写此字段。

设置

“Perfetto 设置”页面(... > Perfetto 设置)中包含其他应配置的设置。
Perfetto SettingsPerfetto Settings
这些设置包括:
  • Perfetto 设置首选项:将其设置为自定义,就可提供 JSON 格式的自定义 Perfetto TraceConfig。其余设置适用于常规首选项。
  • 自动打开追踪:记录追踪后,在新浏览器窗口中自动打开追踪。
  • 追踪持续时间:可指定无限时长或以毫秒为单位的固定持续时间。
  • 追踪缓冲区大小:可指定追踪缓冲区的大小。
  • GPU 追踪缓冲区大小:可指定 GPU 追踪缓冲区的大小。
  • CPU 调度:可详细追踪 CPU 调度事件。
  • ATrace 类别:以逗号分隔的待追踪 ATrace 类别列表。这些类别是指可能出现在许多应用中的事件。
  • ATrace 应用:待追踪 ATrace 应用列表。这些应用是已开启事件的应用。您可以选择追踪所有 ATrace 应用,或提供以逗号分隔的待追踪应用列表。
  • TrackEvent:记录运行应用程序的 TrackEvent 数据。有关 TrackEvent 数据的更多信息,请参阅 Perfetto 追踪事件文档
  • XR 运行时指标:启用 XR 运行时指标的记录。
  • GPU 指标:提供 GPU 指标。
  • GPU 渲染阶段追踪:追踪 GPU 渲染阶段追踪记录。
    • 启用高精度 GPU 渲染阶段追踪:为每一面的渲染提供更多详细信息。
  • TrackEvent 配置:要记录的 TrackEvent 数据。所有字段均以逗号分隔。有关 TrackEvent 配置的更多信息,请参阅 Perfetto 追踪事件文档
    • 进程名称筛选器:仅从与此名称匹配的进程中筛选追踪事件。
    • 流程名称筛选器正则表达式:仅筛选与此正则表达式匹配的流程中的追踪事件。
    • 禁用类别:禁用追踪的事件类别。
    • 启用类别:启用追踪的事件类别。为空时启用所有类别。
    • 禁用标签:已禁用的追踪标签。
    • 启用标签:已启用的追踪标签。为空时启用所有标签。
  • 调用堆栈抽样配置:控制要进行抽样的应用,以及触发抽样的时间/频率。如需了解更多信息,请参阅调用堆栈抽样
Potential data loss during trace recording
在追踪记录过程中,可能会发生数据丢失。当配置的追踪缓冲区大小不足以记录下记录期间发生的事件时,会导致数据丢失。选择足以处理预期工作负载的缓冲区大小并限制追踪持续时间,以最大限度地减少潜在的数据丢失。

工作流程

标记代码并构建

本演示使用适用于 Unity 的示例应用,但 Unreal Engine 应用的工作原理几乎与之相同。这里使用的项目为素材流式传输示例,它展示了如何根据玩家的位置或任何其他可以想象到的真实因素,通过流式输入和输出几何体和物体,在有限的内存下构建更广阔的世界。
Perfetto 追踪提供适用于 UnityUnreal Engine 的内置分析标记,但您还可以使用这两种引擎各自的通用插桩 API 来提供自定义功能。例如,请查看以下流式传输示例的截图,了解如何通过 LODManager.cs 脚本显示 LODManager 的更新块:
LODManager's update block
该更新块会在最终的 Perfetto 追踪记录中显示如下:
Trace results
此截图使用自定义标记字符串标识符作为搜索词,突出显示任何与搜索词匹配的线程,即此处显示的左侧黄色部分。此外,系统会将每个实例的标记添加到追踪记录顶部的时间线,以便轻松地在追踪记录中找到检测的块。
将所有常用循环和其他任何感兴趣的内容标记加入后,就可以使用开发编译版本配置来构建项目,确保在运行时传输检测记录。

运行编译版本并使用 Perfetto 追踪

运行编译版本并将头戴设备通过 USB 连接到主机后,MQDH 的性能分析工具部分就会列出头戴设备,表明可以启动追踪。 Meta Quest headset indicator in Performance Analyzer
在开始追踪前,最后且很重要的一步是,检查设置并启用要追踪的应用中的 ATrace 事件。默认情况下,Perfetto 的追踪 SDK 中包含 Perfetto 会寻找的自有事件类型 TrackEvent。大多数现有引擎不添加这种插桩类型,而是添加另一种插桩类型 ATrace(Android 追踪格式)。由于在整个系统范围内启用所有插桩可能会大幅增加额外开销,因此只启用追踪中添加了相应标记的插桩。您可以轻松地添加 ATrace,方法是:前往 MQDH 中的 Perfetto 设置,找到 ATrace 应用部分,然后添加该捆绑包标识符。
保存后,点击记录以开始追踪。记录足够长的时间以包含所需的事件后,点击停止按钮。完成后,追踪记录会自动在默认浏览器中打开。

GPU 渲染阶段追踪

如要获取应用的 GPU 渲染阶段追踪记录,请按照以下步骤操作:
  1. Perfetto 设置中,启用 GPU 渲染阶段追踪启用高精度 GPU 渲染阶段追踪
  2. 从菜单中选择 GPU 追踪 > 启用
    Perfetto Settings
  3. 运行应用。
  4. 点击记录以开始追踪。
    Perfetto Settings
    结果会显示应用的 GPU 追踪。
成功记录并能够查看追踪后,请花点时间了解导航控制选项,一开始似乎很难,但很快您就会发现这并非难事。请记住,导航的主要输入方式为 WASD 键和滚轮按钮。以下是各按键和按钮对应的基本控制选项:
  • W 键:放大(缩小移动窗口的焦点范围)
  • A 键:向左移动
  • S 键:缩小(扩大移动窗口的焦点范围)
  • D 键:向右移动
  • 鼠标滚轮向上/向下滚动:上下滚动追踪记录
Important areas of trace
以下截图显示 Perfetto 的其中一项优势(前面已提到),即能够将许多不同的数据源聚合在同一条时间线上。这可以包括 CPU / GPU 平均使用率、您可能感兴趣的系统指标以及应用内标记等一切数据源。这样,您就能全面了解并找出系统瓶颈和性能问题的关联信息和原因。利用这项追踪功能,您可以轻松查看 CPU 和/或 GPU 漏帧情况,找出问题所在,并获得潜在原因的概览视图,从而利用其他工具(如 Simpleperf 或 RenderDoc Meta Fork)进一步调查。 Other important areas of trace

保存和加载追踪记录

使用 MQDH 中的 Perfetto 时,它会将所有追踪自动保存在设置 > 记录的追踪部分,并且使用默认文件名保存它们。请在记录追踪后立即重命名这些文件,以便根据需要再次找到相应追踪。 Recorded Traces
或者,从浏览器窗口点击下载按钮,将文件重命名为所需的名称。
如要重新加载旧的捕捉记录,请打开已下载的文件,或从 MQDH 的记录的追踪中选择该记录,在默认浏览器中打开。您也可以在 Perfetto 网站打开追踪。

调用堆栈抽样

在 v51 及更高版本中,Perfetto 增加了对调用堆栈抽样工具 traced_perf 的支持。traced_perf 可定期对应用的调用堆栈进行抽样,并将其记录在 Perfetto 追踪中。调用堆栈样本可用于确定哪些函数消耗的 CPU 时间最多。
Perfetto 与 Linux 的 Perf、Android 的 SimplePerf 等其他抽样分析工具的调用堆栈抽样功能非常相似,但 Perfetto 的优势在于能够在时间线上看到每个样本。这便于生成特定时段的火焰图,以及单独查看每个样本的信息。

要求

您可以前往 Meta Quest 开发者中心,记录启用了调用堆栈抽样的 Perfetto 追踪。如要启用调用堆栈抽样,请前往“性能分析工具”选项卡的“Perfetto 设置”对话框。选择 ... 按钮进入 Perfetto 设置
滚动到底部,找到调用堆栈抽样部分。根据需要进行设置:
  • 启用的应用:您的应用软件包名称。
  • 包含符号文件的文件夹:您的 PC 上包含符号文件的文件夹名称列表,名称以逗号分隔。如果要追踪没有嵌入符号的已发布应用,这项设置会非常有用。在这种情况下,您可以在 PC 中准备符号文件,并在此处提供文件夹的名称。
  • 选择触发调用堆栈抽样的事件:此设置可控制何时进行调用堆栈抽样。可以选择 PerfEvents.Counter 或 PerfEvents.Tracepoint。请参阅 Perfetto PerfEventConfig 文档。
  • 选择进行调用堆栈抽样的频率并设置适合的值:此设置可控制调用堆栈抽样的频率。可以选择“频率”或“周期”。
Callstack Sampling
配置好后,在应用运行时,您就可以通过使用 Perfetto 追踪并点击记录按钮来获取样本。

查看调用堆栈

可以在流程名称下的调用堆栈追踪中找到记录的样本。
Callstacks Track
追踪中的每个菱形图案代表一个样本。您可以逐个选择样本,也可以拖拽并选择多个样本来生成火焰图。
Perfetto flamegraph generated from selected callstack samples showing function call hierarchy.
火焰图的外观与 SimplePerf 等抽样分析工具中的火焰图类似。

Unreal 应用抽样

如要对 Unreal 应用进行抽样,使用调用堆栈样本记录 Perfetto 追踪时,请使用开发编译版本配置,这样系统就不会删除该编译版本中的符号。
如果使用配送或其他编译版本配置,符号就会从中删除,这时请从编译版本输出内容中收集符号文件,并通过 Perfetto 设置提供这些文件。
以下是 Unreal 应用的 5 秒追踪示例。
Unreal Trace
已选择 UGameEngine::Tick,这样我们就能更好地了解每一帧中发生的情况。您可以继续选择 UGameEngine::Tick 下的调用,以了解不同子系统(如渲染或角色更新)的耗时情况。
以下是 Perfetto 用户可能感兴趣的一些其他工具:
  • 使用 RenderDoc Meta Fork 进行 GPU 分析:RenderDoc 图形调试工具的分支,可访问 Meta Quest Snapdragon 835、Meta Quest 2 Snapdragon XR2、Meta Quest Pro Snapdragon XR2+、Meta Quest 3 和 Meta Quest 3S (Snapdragon XR2 Gen 2B) 的底层 GPU 分析数据,特别是来自图块渲染器的信息。
  • 使用 Simpleperf 进行 CPU 分析:Simpleperf 是一个命令行 Android 开发工具,能够以给定频率对应用程序进行采样,以确定 CPU 正在何处消耗时间,以及其他与性能相关的硬件事件发生的位置。
  • Unreal Insights 入门指南:Unreal Insights 是一个 Unreal Engine 性能分析和数据分析工具,有助于追踪瓶颈、性能峰值和线程模式等。

另请参阅