Roku Resource Monitor session file specification
Developers can follow this specification to build a custom resource monitoring tool that analyzes the memory, CPU, and SceneGraph node usage metrics collected with the Roku Resource Monitor. This specification describes the data types and structure of a monitoring session file (.JSON) that has been exported from the Roku Resource Monitor.
This specification has been updated to support Roku Resource Monitor 4.0.
The v1 version of this spec and the session files generated by the previous versions of the Roku Resource Monitor (v1.0 and v1.1) have been deprecated.
File name
The name of an exported Roku Resource Monitor file has the following syntax: <channel-name>_<device-name>_<unix-timestamp>.json.
Data types
The fields in the monitoring file may be one of the following data types:
| Data type | Definition |
|---|---|
| string | Includes alphanumeric and special characters |
| number | Includes integer and fractional numbers. |
| bool | A true/false value. |
File structure
A monitoring session file contains the following objects (listed in order):
| Object | Description |
|---|---|
| device | The name, model, serial number, and OS version of the test device. |
| channel | The ID, name, and version of the test app. |
| metadata | The unique ID, timestamp, and version of the monitoring file. |
| session | A stream of multiple entries of the following types:
|
Device information
The device object contains the following fields that provide information about the test device used for the monitoring session:
| Name | Type | Description | Example |
|---|---|---|---|
| device_name | string | The device-friendly name. | "Roku Express" |
| model_number | string | The device model number. | "3930X" |
| serial_number | string | The device serial number. | "X00400CS3EMP" |
| software_version | string | The software version installed on the device. | "23.0.0" |
| software_build | number | The software version build installed on the device. | 991 |
Channel information
The channel object contains the following fields that provide information about the test app used for the monitoring session:
| Name | Type | Description | Example |
|---|---|---|---|
| id | string | The unique identifier of the app | "581251" or "dev" |
| version | string | The app version | "1.1.2" |
| name | string | The app name | "Roku Developers" |
File metadata
The metadata object contains the following fields that provide information about the JSON file generated for the monitoring session:
| Name | Type | Description | Example |
|---|---|---|---|
| uuid | string | A randomly-generated Version 4 unique user ID (UUID). | cd7cbbeb-c4a7-46dc-ab9f-fdeb90523481 |
| created_at | number | A unix timestamp in milliseconds (13-digit) when the file was created. | 1657721930416 |
| started_at | number | A unix timestamp in milliseconds (13-digit) when the monitoring session was started. | 1657721930416 |
| version | number | The file version. | 4 |
Session information
The session object contains the static memory usage limits of the test app and the live resource usage statistics generated during the monitoring session.
Static object
The static object contains the following persistent data:
| Name | Type | Unit | Description |
|---|---|---|---|
| foreground_limit | number/null | Bytes | The maximum amount of DRAM that may be used by the app when browsing and selecting content in the app UI and during playback. If an app exceeds the limit displayed in the app system memory usage pane while running in the foreground, the Roku OS terminates the app. The foreground limit varies by device, and it is subject to change. On devices that do not support per-app memory limits, the Roku Resource Monitor displays "N/A". The Roku OS, however, does terminate apps running in the foreground when specific system memory levels are reached on those devices.
|
| background_limit | number/null | Bytes | The maximum amount of DRAM that may be used by the app while running in the background (this limit is also applicable for apps that have integrated Instant Resume). If an app exceeds the limit displayed in the app system memory usage pane while running in the background, the Roku OS terminates the app. The Roku OS also terminates apps running in the background when specific system memory levels are reached. On devices that do not support per-app memory limits, the Roku Resource Monitor displays "N/A". The Roku OS, however, does terminate apps running in the background when specific system memory levels are reached on those devices.
|
Live
The live object contains the following objects for the resource usage statistics generated during the monitoring session:
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| bs_objects | array | Array of points that include BrightScripted objects sorted by groups:
|
||||||||||||||||||||||||||||||||||||||||||||||||
| channel_system_memory_usage | array | Array of points for the following system memory usage metrics generated over time:
|
||||||||||||||||||||||||||||||||||||||||||||||||
| channel_cpu_usage | array | Array of points for the following CPU usage metrics generated over time:
|
||||||||||||||||||||||||||||||||||||||||||||||||
| channel_graphics_memory_usage | array | Array of points for the following graphics memory usage metrics generated over time:
|
||||||||||||||||||||||||||||||||||||||||||||||||
| channel_graph_metrics | array | Array of points for the following SceneGraph metrics generated over time (foreground and background):
|
||||||||||||||||||||||||||||||||||||||||||||||||
| graphics_rendering_frame_rate | array | Array of points for the following graphics rendering frame rate data generated over time (foreground and background):
|
||||||||||||||||||||||||||||||||||||||||||||||||
| sgrendezvous | array | Array of points for the following rendezvous event data generated over time (foreground and background):
|
||||||||||||||||||||||||||||||||||||||||||||||||
| fw_beacons | array | Array of app and media events (signal beacons) that have occurred on the app. Each event has a Unix timestamp in milliseconds (13-digit) marking when the event occurred. The timestamp has a number type provided in bytes. See Measuring app performance for detailed descriptions of these events. Channel events:
Media events:
|
||||||||||||||||||||||||||||||||||||||||||||||||
| registry_usage | array | Array of points for the channel registry entries.
|
Monitoring file example
Click here to download a sample RRM 4.1 monitoring file.
Change log
-
v4.1 (June 16, 2025):
- Updated bs_objects and channel_graph_metrics objects.
-
v4.0 (March 12, 2025):
- Updated bs_objects field.
- Updated sample file.
-
v3.1 (September 24, 2024):
- Added fields for tracking BrightScript memory allocation..
-
v3.0 (April 11, 2024):
- Added objects for tracking BrightScript memory allocation.
-
v2.0 (March 28, 2023):
- Added objects for tracking rendezvous events, device registry usage, and graphics frame rendering rate.
- Added objects for tracking app and media events.
-
v1.0 (September 11, 2022):
- Initial release.
- Includes objects for tracking system memory, graphics memory, CPU, and SceneGraph node usage.