This page provides an overview of the performance analytics feature within the Developer Dashboard. As a developer, you can use the performance analytics dashboard to view technical data that can help you monitor key factors (like frame rate) that impact user experience. Using this data, you can proactively validate performance measurements from Perfetto traces (Unity, Unreal, Native) generated in MQDH and take steps to optimize performance if necessary.
Prerequisites
You must have published an app on the Meta Horizon Store with over 100 active users throughout its lifetime.
You must have an account on your team with the proper permissions to access the dashboard. For more information, see Add members and roles to your team.
Limitations
Performance analytics are only available for immersive apps on the Meta Horizon Store.
Performance analytics are not available for PCVR apps, 2D Android apps, hybrid apps, web apps, or apps using the Spatial SDK.
Navigate to Analytics > Performance. Alternatively, you can navigate directly to /manage/applications/{APP_ID}/analytics/performance/.
Key features
Filtering options: Headset Type, Application Version, OS Version
Percentile Metrics: A percentile indicates the percentage of values in a dataset that fall below a specific value. For more information, see Percentiles versus averages
The following images contain charts with fictional data for illustrative purposes.
The value shown at the top of the charts is an average across all data points collected in the specific time range.
Device Frame Rate chart
Shows the number of frames rendered to the headset over approximately 60 seconds.
Max Stale Frames chart
Shows the maximum number of stale frames rendered to the headset approximately every 60 seconds.
CPU Utilization chart
Shows the maximum CPU Usage by an application over approximately 60 seconds.
GPU Utilization chart
Shows the maximum GPU Usage by an application over approximately 60 seconds.
Start Up Time
Shows the amount of time an application takes to go from launch to rendering the 1000th frame.
Memory Utilization
This chart provides a detailed view of an app’s memory usage, including physical memory, virtual memory, and memory allocated by another process for the app. NOTE: This chart is undergoing changes and will be temporarily unavailable.
Percentiles versus averages
Percentiles: A percentile indicates the percentage of values in a dataset that fall below a specific value.
Averages: The average (mean) represents the sum of all values in a dataset divided by the number of values.
Example
Consider the following example data set:
Total Frames
Event Length
5400
60
5309
59
5400
60
5490
61
Given the small data set above, we calculate Average FPS by adding the sum of total frames and dividing it by the sum of the event length column (21599 / 240) or 89.99 FPS
Max Stale Frames
15
10
9
7
6
4
3
2
2
1
0
Here we have a table of logs containing the Max Stale Frames in a given event. To find the p50 or 50th percentile of this data set, we have sorted the data and we find the number where 50% of other data points fall below, which is 4 in this case.
Alerts
You can configure analytics alerts for this dashboard to set up and receive alerts for your app. For more information, see Analytics alerts. Note that alerts can’t be configured for the percentile metrics, just for the average frames per second, and average max stale frames.
Best practices
At the top of the dashboard, you can use the Filters menu to filter data by date, app version, os version, and headset type. You can also adjust the time breakdown to view data by hour or by day.
You can also adjust the breakdown between device type, os version, or app version.