Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
exclude
maxLevel2
minLevel1maxLevel2
include
outlinefalse
indent
exclude
stylenone
typelist
classprintabletrue

...

class

Reference for the end-of-render report listener. JSON file output, with checkpoint/resume support.

...

Listener Options

Type

Description

Required?

Default

type

string

Must be "jsonreport"

y

name

string

Unique name of the listener

y

""

outputFilename

string

File name for the final JSON report

y

""

keepAllCheckpoints

bool

Turn this off to save space by only writing out JSON stats immediately before exit, otherwise, a block of stats is written on every checkpoint during the course of the render.

n

y

Metric Rules

regexp

string

One or more metrics to be observed. If this is empty or missing no metric data will be written to the JSON file.

ny

""

samplingInterval

integer

Sampling interval in MS for the metrics requested in the preceding regexp param.

n

1000ms

The outputFilename setting can include allows for the inclusion of environment variables, which will be expanded when processed during processing by the Listener. Standard It supports standard environment variable formats are supported, as well as along with Linux shell variable expansion syntax such as the following:

$VAR
${VAR}
${VAR:-fallback}
${VAR:=fallback}

Analysis

The viewing of the diagnostic report is best done through the new RenderMan Stats Portal application which can be used for both live data presentation and offline report introspection. Its content is currently limited, but useful for viewing the JSON metric hierarchy and comparing two or more reports.

Metric Data

The JSON report defines a "metrics" block that contains data payloads for all observed metrics, hierarchically organized according to each metric's namespace.

The format for an individual metric directly reflects the namespace built into the metric name, with each component in the namespace represented by a single, nested JSON object. For example, an entry for the metric: 

/rman/raytracing.numRays

Would be the following: 

For guidance on configuring a JSON report through render options and DCC settings, as well as insights into report data interpretation and analysis, please refer to the Diagnostic Report documentation.

Report Format

The JSON Report listener output file contains a single JSON object which contains a header object and a frame object.

Code Block
languagejson
{
  "metricsheader": { ... },
  "rmanframe": {  ...     "raytracing}
}

header

The JSON Report header will contain a version key/value pair plus several high-level metrics. For example:

Code Block
languagejson
"header": {
        "numRaysversion": {
        "26.0",
    "descriptionvariant": "Total number of rays traced.",
        { ... },
    "timestampintegrator": 2429320,{ ... },
        "payload”maxsamples": [{ 5873490 ]... },
      "pixelvariance": { ... },
    "realTime":  }
   { ... }
 ,
}

Other metrics in the "raytracing" metric namespace would be nested under the "rman" block.

Report Format

...

frame

The frame object contains an array of one or more attempts. Each element of the attempts would be a checkpoint output or the final data. A non-checkpointed render would have a single metrics object in the attempts array.

Code Block
languagejson
{
  "header": { ... },
  "frame": {
 ...  }
}

header

The JSON Report header will contain a version key/value pair plus several high-level metrics. For example:

Code Block
languagejson
"header": {
    "version": "27.0", "attempts": [
      {
        "variantmetrics": { ... },
    "integrator": { ...}
},    ]
"maxsamples": { ... },
    "pixelvariance": { ... },
    "realTime": { .
}

If the render included one or more checkpoints, and the keepAllCheckpoints option was enabled, then the JSON Report output would contain a series of attempts containing metrics, iteration, and reason plus a final attempts entry with the end-of-render data.

Code Block
languagejson
{
  "header": { ... },
  }

frame

The frame object contains an array of one or more attempts. Each element of the attempts would be a checkpoint output or the final data. A non-checkpointed render would have a single metrics object in the attempts array.

Code Block
languagejson
{"frame": {
    "headerattempts": {[
...  },   "frame": {
    "attempts": [   "metrics": { ... },
{         "metricsiteration": { ... }<int: iteration count>,
      }  "reason": <one  ]
  }
}

...

of "checkpoint"|"finalizing"|"exiting">
      },
      {
        "metrics": { ... }
      }
    ]
  }
}

metrics

The metrics object contains the bulk of the diagnostic data, where each metric is encapsulated within its own individual JSON object. Metric objects are organized hierarchically based on the namespace of each metric.

For example, an entry for the metric: 

/rman/raytracing.numRays

Would be the following: 

Code Block
languagejson
{
  "headermetrics": {
... },   "framerman": {
     "attempts": [
      {
        "metrics": { ... },
"raytracing": {
       "iterationnumRays": 10,{
        "reasondescription": "checkpoint"Total number of rays traced.",
  },       {"timestamp": 6575431,
        "metricspayload": {[ ...11412363 }]
      }
    ]
  } } }

Example Configurations

Configuration Example: All lighting metrics

The following excerpt from a configuration file will enable the JSON report output, writing to: checkpoint_stats.json. The "MetricRules" section indicates that all metrics should be gathered, with data sampled once per second. See below for an example output for this configuration.

...

stats.ini
Code Block
languagejson
# Roz Stats default configuration file
# Copy this file to: /a/path/of/your/choosing
# set RMAN_STATS_CONFIG_PATH = /a/path/of/your/choosing
# or run prman -statsconfig thisfile.ini
version 0.1

# Stats processing log level.
# Range is 0 (none) to 5 (debug output). Default is 3 (warnings)
logLevel 3

# Session configuration
[Session]
name "JSON Report Session"
liveStatsEnabled 1

# List of listeners which the session should create and manage.
[ManagedListeners][Listener]
    type "jsonreport"
    name "jsonListener"
    outputFilename "checkpoint_stats.json"
	keepAllCheckpoints 1

[MetricRules]
    # SaveReport alllighting metrics to the JSON file, sampled once per second
    [Rule]
    regexp "/rman/lighting.*"
    samplingInterval 1000

...

The following excerpt from a configuration file will enable the JSON report output, writing to: checkpoint_stats.json. The [MetricRules] section indicates that all metrics should be gathered, with data sampled once per second. See below for an example output for this configuration.

...

stats.ini
Code Block
languagejson
# Roz Stats default configuration file
# Copy this file to: /a/path/of/your/choosing
# set RMAN_STATS_CONFIG_PATH = /a/path/of/your/choosing
# or run prman -statsconfig thisfile.ini
version 0.1

# Stats processing log level.
# Range is 0 (none) to 5 (debug output). Default is 3 (warnings)
logLevel 3

# Session configuration
[Session]
name "JSON Report Session"
liveStatsEnabled 1

# List of listeners which the session should create and manage.
[ManagedListeners]
[Listener]
    type "jsonreport"
    name "Memory Report"
    outputFilename "memory_report.json"
    keepAllCheckpoints 0

    [MetricRules]       
        [Rule]
        regexp "/system/memoryTracking.*"

...