The data coming out of the stats system can be translated and presented in any number of ways depending on the analysis needs. The Listener plugin framework is designed for extensibility but there is some basic functionality that is built into the system.

Built-in Listeners

Below is the list of built-in Listeners provided with the new system.

JSON Report is a configurable report that writes diagnostic data to a hierarchical JSON document at render exit and on checkpoint exits.

Print Listener is a "Hello World" example Listener which prints raw data to the console.

Snapshot Listener prints a snapshot of stats on demand or at the end of a render. The "snapshot" is a diagnostic summary plus a configurable set of additional metrics.

Telemetry Listener produces formatted output for testing, debugging, or benchmarks. It can stream JSON-formatted data to the console during a render, or write a final-report CSV file.


Listener TypeDescriptionUseNotes
jsonreportWrite hierarchical metric data to a JSON file.An end-of render JSON report, including checkpoint/resume support.Default is currently to write all checkpoints but this can be disabled in the listener configuration. See JSON Report Listener reference
printWrite metric data to std::out.Writes raw output to the console.The "Hello World" of example listeners.
snapshotWrite a summary of render stats to the console.An end-of-render summary that is comparable with the legacy stats summary, plus optional extra metric data. The summary is also available mid-render by specifying "trigger" events.For RIB or Preview renders only, does not yet write a snapshot when Live/IPR renders are canceled.
telemetryStream of data or report to CSVBenchmarks or debuggingCan be an end-of-render CSV report written to disk, or can be a live stream of metrics to the console as the render progresses.

Live Stream

Live streaming is enabled at the Session level which then allows any supporting client to attach.


Live Statistics

The diagnostics system includes both a gRPC server and a WebSocket server. The gRPC server is responsible for serving the live data to a client that is built-in to the it image tool. The WebSocket server is responsible for the live data streaming to the DCC clients. Each of these is configured with an internal BufferedListener which handles the data stream management for the server(s).