Performance Metrics

As of release 24.11, for each release, USD generates performance metrics using a specific set of assets and specific hardware and software configurations. This page describes what metrics are collected, what hardware and software configurations are used, the actual metrics results, and how to generate the metrics locally.

What We Measure

For a given asset, our performance script captures the following metrics by default (items in bold are reported on this page):

  • Time to load and configure USD plugins for usdview

  • Time to open the stage

  • Time to reset the usdview prim browser

  • Time to initialize the usdview UI

  • Time to render first image (in usdview)

  • Time to shutdown Hydra

  • Time to close the stage

  • Time to tear down the usdview UI

  • Total time to start and quit usdview

  • Time to traverse the prims in the stage

We run 100 iterations for each asset, and capture the minimum and maximum times for that set of iterations. We also calculate the mean time across the 100 iterations.

For each asset, we first warm the filesystem cache by loading the asset in usdview, to ensure we’re not including cache performance issues in our metrics.

All assets used to measure performance are assumed to be available locally. Time to download assets is not measured or included as part of the gathered performance metrics.

What Environment Is Used

This section describes the computing environment used to generate the published performance metrics. The following operating systems and hardware are currently used.

Note

Machine specifications are subject to change. If specifications do change for a give release, historical performance measurements will be run to backfill any outdated data.

Linux

  • OS: AlmaLinux 9

  • CPU: AMD EPYC 9654 96-Core Processor

  • CPU Utilization: 47 Core(s), 47 Logical Processor(s) (no hyperthreading)

  • RAM: 145GB

  • GPU: NVIDIA L40S-24Q

macOS

  • OS: macOS 14.3

  • CPU: Apple M2 Ultra (20 Core)

  • RAM: 192GB

  • GPU: Apple M2 Ultra GPU (76 Core)

Windows

  • OS: Microsoft Windows 11 Enterprise

  • CPU: AMD EPYC 7763 64-Core Processor, 2450 Mhz

  • CPU Utilization: 31 Core(s), 31 Logical Processor(s) (no hyperthreading)

  • RAM: 128GB

  • GPU: NVIDIA RTXA6000-24Q

USD Build

For each of the operating systems and hardware platforms listed previously, we build USD with the same build configuration. We use a stock invocation of build_usd.py with the default options (release build, Python components, imaging and USD imaging components, usdview, etc). Note that this build uses the default system memory allocator, and does not use an alternate allocator (as described in Use an allocator optimized for multithreading).

Metrics

Metrics are all measured in seconds.

Performance Graphs Per Platform

The following graphs show the time (in seconds) to open and close usdview for each asset. Graphs are provided for Linux, macOS, and Windows platforms (as described in What Environment Is Used). Performance data from the four most recent releases is reported on a rolling basis.

Note

A full historical rerun on linux was performed for the 26.03 release due to changes in machine configuration.

Interpret the metrics on this page with caution. Variation may arise from a variety of sources, including run-to-run inconsistency in how the GL driver schedules its flushes against our requests. Investigation on these is ongoing.

_images/linux.svg _images/macos.svg _images/windows.svg

Standard Shader Ball

This asset is designed to be a comprehensive test of a broad array of material properties in a single render. Geometry is expressed using USD, materials are defined using MaterialX, texture maps are provided in OpenEXR format and encoded using the Academy Color Encoding System ACEScg color space.

In our performance sweep we use the mtlx_bubblegum material. Note the image below may not exactly match the image generated during the performance run; the primary intention is not necessarily to exercise specific renderers.

https://raw.githubusercontent.com/usd-wg/assets/main/full_assets/StandardShaderBall/media/example_materials/mtlx_bubblegum.jpg

The shader ball asset can be downloaded here.

Linux Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.082663
max: 0.127426
mean: 0.0999312
min: 0.080814
max: 0.127205
mean: 0.09721862
min: 0.098586
max: 0.152453
mean: 0.1147789
min: 0.102143
max: 0.141323
mean: 0.12018247

Render first image

min: 1.04623
max: 4.978987
mean: 1.1027886
min: 1.042727
max: 4.979227
mean: 1.09743982
min: 1.061915
max: 4.389524
mean: 1.11305927
min: 1.05858
max: 4.813072
mean: 1.11026738

Close stage

min: 0.000813
max: 0.007884
mean: 0.00110997
min: 0.000865
max: 0.007715
mean: 0.0011852
min: 0.000612
max: 0.007621
mean: 0.0009525
min: 0.000585
max: 0.00771
mean: 0.00113363

Shut down Hydra

min: 0.034821
max: 0.045175
mean: 0.03726478
min: 0.035267
max: 0.043886
mean: 0.03759213
min: 0.035256
max: 0.044038
mean: 0.03787955
min: 0.035166
max: 0.041641
mean: 0.03717791
macOS Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.089313
max: 0.099611
mean: 0.0922419
min: 0.08957
max: 0.094074
mean: 0.09161377
min: 0.096033
max: 0.106589
mean: 0.10036488
min: 0.124269
max: 0.135039
mean: 0.1273308

Render first image

min: 0.732215
max: 1.182054
mean: 0.75341856
min: 0.734351
max: 0.771068
mean: 0.75320206
min: 1.088926
max: 1.434863
mean: 1.11545414
min: 0.743375
max: 1.198365
mean: 0.76448214

Close stage

min: 0.000228
max: 0.00072
mean: 0.0002692
min: 0.000229
max: 0.000765
mean: 0.00027705
min: 0.000119
max: 0.000491
mean: 0.00016517
min: 0.000121
max: 0.000378
mean: 0.00017008

Shut down Hydra

min: 0.012043
max: 0.020186
mean: 0.01560325
min: 0.012992
max: 0.021094
mean: 0.01651058
min: 0.012247
max: 0.020553
mean: 0.01637388
min: 0.012409
max: 0.020834
mean: 0.01706989
Windows Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.261208
max: 0.285934
mean: 0.27106556
min: 0.307208
max: 0.330622
mean: 0.31348188
min: 0.298701
max: 0.315642
mean: 0.30742671
min: 0.263552
max: 0.277434
mean: 0.27102602

Render first image

min: 2.147584
max: 2.276122
mean: 2.20730552
min: 2.200855
max: 2.395714
mean: 2.29471476
min: 2.184459
max: 8.745092
mean: 2.3044740200000002
min: 2.140281
max: 2.4015
mean: 2.23789929

Close stage

min: 0.001098
max: 0.003072
mean: 0.00161325
min: 0.001129
max: 0.002772
mean: 0.00170384
min: 0.000316
max: 0.001709
mean: 0.00068915
min: 0.00033
max: 0.000791
mean: 0.00044066

Shut down Hydra

min: 0.060869
max: 0.070369
mean: 0.06414039
min: 0.062921
max: 0.072712
mean: 0.06641849
min: 0.060228
max: 0.069912
mean: 0.06285791
min: 0.06344
max: 0.071558
mean: 0.06660486

Kitchen Set

This asset provides a complex kitchen scene.

https://openusd.org/images/Kitchen_set_thumb.png

The Kitchen Set asset can be downloaded here.

Linux Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.054413
max: 0.107499
mean: 0.06355591
min: 0.044437
max: 0.07722
mean: 0.0531934
min: 0.043523
max: 0.08078
mean: 0.0529231
min: 0.048359
max: 0.090553
mean: 0.05856095

Render first image

min: 0.208445
max: 0.228524
mean: 0.21469052
min: 0.206491
max: 0.218515
mean: 0.21256221
min: 0.218023
max: 0.233961
mean: 0.22471585
min: 0.217668
max: 0.243507
mean: 0.22705873

Close stage

min: 0.007991
max: 0.024924
mean: 0.01002413
min: 0.007912
max: 0.019898
mean: 0.009916930000000001
min: 0.008055
max: 0.020271
mean: 0.00992871
min: 0.008124
max: 0.021591
mean: 0.01004208

Shut down Hydra

min: 0.02991
max: 0.039342
mean: 0.03162712
min: 0.032992
max: 0.043855
mean: 0.03467746
min: 0.034244
max: 0.040128
mean: 0.03604341
min: 0.033784
max: 0.038803
mean: 0.03593167
macOS Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.065663
max: 0.090223
mean: 0.07125644
min: 0.063966
max: 0.080906
mean: 0.0698448
min: 0.061154
max: 0.084453
mean: 0.0677701
min: 0.085585
max: 0.109018
mean: 0.09204828

Render first image

min: 0.266764
max: 0.283842
mean: 0.27376717
min: 0.269227
max: 0.290286
mean: 0.27491572999999997
min: 0.259431
max: 0.27281
mean: 0.26522798000000003
min: 0.259301
max: 0.273705
mean: 0.26457672

Close stage

min: 0.002111
max: 0.003524
mean: 0.00255995
min: 0.002026
max: 0.003375
mean: 0.00240484
min: 0.002038
max: 0.003781
mean: 0.00244283
min: 0.002021
max: 0.003675
mean: 0.00247759

Shut down Hydra

min: 0.014569
max: 0.025991
mean: 0.01954361
min: 0.016196
max: 0.029243
mean: 0.02228483
min: 0.017222
max: 0.02856
mean: 0.023692190000000002
min: 0.01651
max: 0.031314
mean: 0.02202539
Windows Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.113508
max: 0.133956
mean: 0.12159507
min: 0.111981
max: 0.137971
mean: 0.12011667
min: 0.105351
max: 0.120111
mean: 0.11219626
min: 0.10763
max: 0.123955
mean: 0.11461558

Render first image

min: 0.369105
max: 0.398015
mean: 0.38108189
min: 0.370883
max: 0.410614
mean: 0.38819254
min: 0.387114
max: 0.430436
mean: 0.40021584
min: 0.387877
max: 0.417364
mean: 0.39946686

Close stage

min: 0.017828
max: 0.024302
mean: 0.02113338
min: 0.018721
max: 0.026777
mean: 0.02178006
min: 0.01869
max: 0.028976
mean: 0.02328194
min: 0.019835
max: 0.032572
mean: 0.02471053

Shut down Hydra

min: 0.034458
max: 0.048988
mean: 0.03803212
min: 0.040022
max: 0.047903
mean: 0.04345859
min: 0.045518
max: 0.05392
mean: 0.049226980000000004
min: 0.045756
max: 0.054098
mean: 0.04928151

ALab

ALab is a full production scene created by Animal Logic and contains over 300 assets, complete with high-quality textures and two characters with looping animation in shot context. Supplied as four separate downloads: the full production scene, high-quality textures, shot cameras matching the ALab trailer, and baked procedural fur and fabric for the animated characters.

The metrics have been measured with the base asset merged with the additional “techvars” info.

https://animallogic.com/wp-content/uploads/2022/08/LoopySequence02.gif

The ALab asset can be downloaded here.

Linux Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.380449
max: 0.604846
mean: 0.43491776
min: 0.259405
max: 0.373835
mean: 0.32127596
min: 0.262824
max: 0.381295
mean: 0.3155681
min: 0.278403
max: 0.377748
mean: 0.3208941

Render first image

min: 5.718226
max: 6.035729
mean: 5.88980431
min: 5.756927
max: 6.10323
mean: 5.90948085
min: 6.034976
max: 6.376652
mean: 6.20103818
min: 6.002758
max: 6.374273
mean: 6.17849757

Close stage

min: 0.111443
max: 0.148495
mean: 0.11690323
min: 0.112777
max: 0.139937
mean: 0.11702461
min: 0.10802
max: 0.130206
mean: 0.11329438
min: 0.107958
max: 0.13805
mean: 0.11300532

Shut down Hydra

min: 0.479046
max: 0.805852
mean: 0.59390578
min: 0.502722
max: 0.833467
mean: 0.6238108
min: 0.530892
max: 0.882976
mean: 0.65899259
min: 0.542178
max: 0.844146
mean: 0.65962838
macOS Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.448676
max: 0.696681
mean: 0.48802467
min: 0.404042
max: 0.525631
mean: 0.43365319
min: 0.387289
max: 0.476831
mean: 0.41920031
min: 0.401131
max: 0.479708
mean: 0.43101433

Render first image

min: 2.657646
max: 3.089222
mean: 2.88767524
min: 2.692878
max: 3.149042
mean: 2.90695481
min: 3.374587
max: 3.796386
mean: 3.59016131
min: 3.247161
max: 3.697333
mean: 3.51718546

Close stage

min: 0.033888
max: 0.04874
mean: 0.03857322
min: 0.032976
max: 0.045111
mean: 0.03838184
min: 0.032904
max: 0.046616
mean: 0.03683789
min: 0.03243
max: 0.044327
mean: 0.0365513

Shut down Hydra

min: 0.132362
max: 0.15432
mean: 0.14241809
min: 0.125249
max: 0.160093
mean: 0.14434834
min: 0.142813
max: 0.177915
mean: 0.15281977
min: 0.135475
max: 0.170974
mean: 0.15313856
Windows Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.462555
max: 0.49612
mean: 0.47833338
min: 0.388397
max: 0.501158
mean: 0.40847451
min: 0.388077
max: 0.416403
mean: 0.4029927
min: 0.397166
max: 0.587801
mean: 0.41254627

Render first image

min: 7.725252
max: 8.814743
mean: 7.86926245
min: 7.661506
max: 8.938386
mean: 7.95734312
min: 7.782884
max: 8.019821
mean: 7.89220199
min: 7.648056
max: 8.347713
mean: 7.87855149

Close stage

min: 0.299041
max: 0.361021
mean: 0.33138915
min: 0.309628
max: 0.373266
mean: 0.33488903000000003
min: 0.317541
max: 0.405188
mean: 0.35938741
min: 0.340327
max: 0.432633
mean: 0.38996225

Shut down Hydra

min: 0.268075
max: 0.511238
mean: 0.35748124
min: 0.275811
max: 0.522579
mean: 0.36632579
min: 0.329635
max: 0.572838
mean: 0.44994447
min: 0.351016
max: 0.632485
mean: 0.50048855

Moore Lane

4004 Moore Lane is a fully composed, high-quality scene for the purpose of testing various visual computing issues. The house itself was wrapped around a number of typical problem areas for light transport and noise sampling. This includes things like thin openings in exterior walls, recessed area light sources, deeply shadowed corners, and high-frequency details. The exterior landscape surrounding the house consisted of a relatively simple ecosystem of instanced plants which could provide some additional levels of complexity. In addition to the geometry itself being designed to exacerbate some typical issues, the USD structure itself was created for several layers of testing.

The metrics have been measured using the contained MooreLane_ASWF_0623.usda file.

https://dpel.aswf.io/images/4004/render_20181.jpeg

The Moore Lane asset can be downloaded here.

Linux Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.047397
max: 0.069692
mean: 0.05011702
min: 0.046413
max: 0.068611
mean: 0.04868188
min: 0.045243
max: 0.061459
mean: 0.04774144
min: 0.051093
max: 0.059576
mean: 0.05292827

Render first image

min: 7.648969
max: 7.979791
mean: 7.82945825
min: 7.601377
max: 8.01067
mean: 7.79920461
min: 7.024242
max: 7.330487
mean: 7.1917083
min: 7.106522
max: 7.491846
mean: 7.30991904

Close stage

min: 0.035781
max: 0.038684
mean: 0.0368609
min: 0.034998
max: 0.04429
mean: 0.03687787
min: 0.034029
max: 0.038338
mean: 0.03618818
min: 0.033988
max: 0.038964
mean: 0.03618142

Shut down Hydra

min: 1.000221
max: 1.108284
mean: 1.03728216
min: 0.99897
max: 1.103792
mean: 1.03985028
min: 0.997761
max: 1.145262
mean: 1.0445001
min: 1.001618
max: 1.119256
mean: 1.04177241
macOS Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.08339
max: 0.08886
mean: 0.08464025
min: 0.082767
max: 0.086665
mean: 0.08393583
min: 0.0779
max: 0.083264
mean: 0.07919203
min: 0.103792
max: 0.115776
mean: 0.10550355

Render first image

min: 4.842576
max: 5.902118
mean: 5.2332561
min: 4.836536
max: 5.79493
mean: 5.2620495
min: 4.928251
max: 5.818517
mean: 5.27123588
min: 4.825569
max: 5.729761
mean: 5.17014079

Close stage

min: 0.003316
max: 0.010872
mean: 0.00414966
min: 0.003405
max: 0.008938
mean: 0.0039708
min: 0.003165
max: 0.008126
mean: 0.0034966899999999998
min: 0.003239
max: 0.007467
mean: 0.00347463

Shut down Hydra

min: 0.094684
max: 0.372043
mean: 0.28783911
min: 0.115016
max: 0.220803
mean: 0.12306854
min: 0.121073
max: 0.137621
mean: 0.12819004
min: 0.121472
max: 0.188133
mean: 0.13085061
Windows Metrics (min/max/mean in seconds)

Metric

25.05

25.08

25.11

26.03

Open stage

min: 0.138429
max: 0.153354
mean: 0.14575919
min: 0.143945
max: 0.169911
mean: 0.1492643
min: 0.135837
max: 0.148618
mean: 0.14251247
min: 0.125819
max: 0.141703
mean: 0.1328517

Render first image

min: 9.49156
max: 11.177957
mean: 10.24690578
min: 8.738549
max: 10.169592
mean: 9.10423748
min: 8.113206
max: 9.48835
mean: 8.81574719
min: 7.307756
max: 9.21315
mean: 8.49179167

Close stage

min: 0.095224
max: 0.119185
mean: 0.10143141
min: 0.094702
max: 0.116359
mean: 0.10147604
min: 0.094986
max: 0.124853
mean: 0.10156746999999999
min: 0.096086
max: 0.127534
mean: 0.1035804

Shut down Hydra

min: 0.311263
max: 0.40723
mean: 0.36185346
min: 0.31048
max: 0.415117
mean: 0.36670874999999997
min: 0.321071
max: 0.470964
mean: 0.38557374
min: 0.354215
max: 0.457584
mean: 0.41048186

Running Performance Metrics Locally

We encourage developers to run the USD performance metrics to measure performance impacts of OpenUSD code contributions. Performance metrics can also be run to validate local runtime environments and hardware configurations.

Performance metrics are generating using the usdmeasureperformance.py script found in pxr/extras/performance. See the usdmeasureperformance tool docs for more information on the different parameters available.

usdmeasureperformance.py uses usdview and testusdview, so you will need to make sure those are in your current path, or aliased properly.

For gathering the metrics published on this page, the following parameters are used (for each asset):

python usdmeasureperformance.py <asset.usda> -i 100 -a min -o <metrics output filename.yaml>

Optionally, –tracedir <dir> will output trace information to dir that may aid in performance debugging.

Adding Custom Metrics

You can add your own custom metrics and have usdmeasureperformance.py include them as part of the set of metrics that it measures.

To define a custom metric, create a script file that defines a testUsdviewInputFunction() function that will be passed to testusdview. For example, if you wanted to add a metric named “process prims”, that traversed the stage and processed each prim in some way, you might have a processPrimsMetric.py script that looks something like:

from pxr import Usd, UsdUtils, Usdviewq

def testUsdviewInputFunction(appController):
    with Usdviewq.Timer("process prims", True):
        stage = appController._dataModel.stage
        for prim in stage.Traverse():
            # process prim as needed, etc

See also the “traverse stage” example in pxr/extras/performance/explicitMetrics/stageTraversalMetric.py.

To include your custom metrics when running usdmeasureperformance.py, add your metrics script name and metric name as part of the --custom-metrics script parameter. For example, if you wanted to include the “process prims” metric example for “MyTestAsset.usda”, you would use a usdmeasureperformance.py command line similar to:

python usdmeasureperformance.py MyTestAsset.usda --custom-metrics processPrimsMetric.py:'process prims'

usdmeasureperformance.py will look for your custom metric script relative to the directory from which the usdmeasureperformance.py script is run.