perf_panel
Generates a standalone HTML panel from one or two Metal GPU trace recordings, showing per-frame GPU time and hitches, FPS lows, memory, and A/B comparisons in a browser.
Instructions
Writes one HTML file, <name>.panel.html in the runs directory, that shows one or two recordings in a
browser without a server: GPU time per frame with the hitches marked, the numbers (FPS and its lows, frame
time, jitter, stutter, memory, thermal state), Metal memory over time and, for two runs, A against B. The file
holds the data itself, no path, and loads nothing from the network; the viewer can hide and reorder the
widgets and export the layout as JSON. preset fps is the timeline, numbers and memory; compare (two runs)
puts A against B first. skip_s leaves out the first seconds of each recording (the start-up), as perf_compare does.
layout (tab ids in the order to show) is saved as panel.json in the runs directory and becomes the default tab
order of every panel, the live one too, until the viewer changes it in the browser; ids left out are hidden but
can be switched back on; tabs are summary, ab, frames, encoders, counters, memory and data, and a panel.json
you wrote yourself, or copied from the panel's Layout JSON, works the same.
Returns the file name, the runs, the frames shown and the file's bytes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | name for the panel file: letters, digits, '.', '_', '-' | |
| runs | Yes | one or two run names from perf_runs; with two, the first is A, the reference | |
| layout | No | tabs to show, in order: summary, ab, frames, encoders, counters, memory, data; saved as panel.json in the runs directory as the default for every panel | |
| preset | No | fps (default) or compare (needs two runs) | |
| skip_s | No | seconds to leave out at the start of each recording, where shaders compile and resources load; 0 (default) keeps all. The GPU numbers, hitches and Metal memory are recomputed without them |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||