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.
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.
The shader ball asset can be downloaded here.
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
|
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
|
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.
The Kitchen Set asset can be downloaded here.
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
|
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
|
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.
The ALab asset can be downloaded here.
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
|
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
|
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.
The Moore Lane asset can be downloaded here.
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
|
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
|
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.