GPU 性能分析
本节介绍如何通过原生 GPU 性能工具捕获和分析 WebGL 或 WebGPU 帧,调试 GPU 操作并分析性能。
初步测量可使用 MiniStats,或通过 AppStats 启用 GPU 计时。原生工具用于进一步分析这些测量背后的渲染工作。
Web 应用通常运行在隔离环境中,与原生 GPU 分析工具的兼容和集成受到限制,因此这类分析在 Web 平台尤其困难。本页介绍部分平台上经过测试的方法。
Apple 芯片 macOS 上的 WebGPU 应用
-
克隆 WebKit:
git clone https://github.com/WebKit/WebKit.git WebKit -
构建 MiniBrowser,约需 30 分钟:
cd WebKitTools/Scripts/build-webkit -cmakeargs="-DENABLE_WEBGPU_BY_DEFAULT=1" --release -
启动 MiniBrowser,并指定 Web 应用 URL:
__XPC_METAL_CAPTURE_ENABLED=1 Tools/Scripts/run-minibrowser --release --url https://playcanvas.com/examples/ -
在另一个命令行窗口中配置捕获帧数,默认为 1。
notifyutil -s com.apple.WebKit.WebGPU.CaptureFrame 2 -
在合适时机捕获帧:
notifyutil -p com.apple.WebKit.WebGPU.CaptureFrame这会生成捕获文件,启动 MiniBrowser 的命令行窗口会输出路径,例如:
Success starting GPU frame capture at path file:///var/folders/m3/cnrw6k214hxd0hq1rf7cy3w40000gn/T/com.apple.WebKit.GPU+org.webkit.MiniBrowser/8C9372EF-1254-4FC5-8CA9-730FB -
双击文件,在 Xcode 中打开,再点击对话框中的 Replay。随后可检查逐帧绘制调用、分析资源、调试着色器并收集性能指标。

Apple 芯片 macOS 上的 WebGL 应用
上述步骤只支持捕获 WebGPU 应用。要捕获 WebGL,可以在同一页面嵌入一个小型 WebGPU 应用,通常捕获 2 到 3 帧。因为两者底层都使用 Metal API,捕获会同时包含 WebGPU 和 WebGL 工作。
PlayCanvas 应用可以使用现成脚本简化流程,只需将它附加到场景中的任意一个实体:
https://github.com/playcanvas/engine/blob/main/scripts/utils/mac-gpu-profiling.js
Windows 上的 WebGL 和 WebGPU 应用
使用 Microsoft PIX 在 Chrome 中捕获 GPU 帧的方法见:https://toji.dev/webgpu-profiling/pix
也可以使用 RenderDoc,方法见:https://edw.is/renderdoc-webgl/
若希望在 Chrome 中使用 AMD Radeon GPU Profiler 或 NVIDIA Nsight,请参阅这篇文章。
Meta Quest 上的 WebGL 应用
使用 Meta 的 RenderDoc 分支捕获 Quest 设备渲染的方法,见这篇文章。