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
In 26.11, the performance test environment’s Python version was upgraded to 3.11. Prior tests were performed with Python 3.9.
As of 26.11, a regression on MacOS was observed in “shut_down_hydra” on the Moore Lane and Alab assets with no obvious causes, which we’re currently investigating with the help of Apple.
As of 26.08, a regression on Windows was observed in “bring up the ui” on all assets. We welcome assistance in investigating both this regression and existing additional performance overhead on Windows vs other OSes.
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 |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.102143
max: 0.141323
mean: 0.12018247
|
min: 0.108347
max: 0.142785
mean: 0.12522259
|
min: 0.125322
max: 0.148907
mean: 0.13320966
|
min: 0.118496
max: 0.139623
mean: 0.12779292
|
Render first image |
min: 1.05858
max: 4.813072
mean: 1.11026738
|
min: 1.132672
max: 5.047174
mean: 1.18685452
|
min: 1.110248
max: 7.867876
mean: 1.19898046
|
min: 0.939541
max: 7.358552
mean: 1.02176265
|
Close stage |
min: 0.000585
max: 0.00771
mean: 0.00113363
|
min: 0.000627
max: 0.00862
mean: 0.00108197
|
min: 0.000657
max: 0.008608
mean: 0.00118314
|
min: 0.000502
max: 0.002061
mean: 0.00071391
|
Shut down Hydra |
min: 0.035166
max: 0.041641
mean: 0.03717791
|
min: 0.038391
max: 0.046654
mean: 0.04102367
|
min: 0.038988
max: 0.049061
mean: 0.04176199
|
min: 0.008497
max: 0.023867
mean: 0.01010626
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.124269
max: 0.135039
mean: 0.1273308
|
min: 0.12139
max: 0.129204
mean: 0.12521404
|
min: 0.13547
max: 0.146209
mean: 0.13819121
|
min: 0.125397
max: 0.136868
mean: 0.12768723
|
Render first image |
min: 0.743375
max: 1.198365
mean: 0.76448214
|
min: 0.787785
max: 1.314961
mean: 0.80603199
|
min: 0.407376
max: 0.898428
mean: 0.41666772
|
min: 0.625543
max: 0.93639
mean: 0.63601721
|
Close stage |
min: 0.000121
max: 0.000378
mean: 0.00017008
|
min: 0.000138
max: 0.000498
mean: 0.0001761
|
min: 0.000148
max: 0.000533
mean: 0.00018699
|
min: 0.000136
max: 0.000292
mean: 0.000177
|
Shut down Hydra |
min: 0.012409
max: 0.020834
mean: 0.01706989
|
min: 0.012981
max: 0.022092
mean: 0.01737945
|
min: 0.009067
max: 0.015838
mean: 0.01351388
|
min: 0.004196
max: 0.009193
mean: 0.0067994
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.263552
max: 0.277434
mean: 0.27102602
|
min: 0.261372
max: 0.281605
mean: 0.27079815
|
min: 0.271862
max: 0.289156
mean: 0.28077484
|
min: 0.265973
max: 0.295985
mean: 0.27629556
|
Render first image |
min: 2.140281
max: 2.4015
mean: 2.23789929
|
min: 2.275701
max: 8.259477
mean: 2.43007551
|
min: 2.215232
max: 13.666641
mean: 2.40498329
|
min: 1.107839
max: 1.227093
mean: 1.14573428
|
Close stage |
min: 0.00033
max: 0.000791
mean: 0.00044066
|
min: 0.000341
max: 0.000752
mean: 0.00045084
|
min: 0.000374
max: 0.000939
mean: 0.0004813
|
min: 0.000339
max: 0.001147
mean: 0.000423
|
Shut down Hydra |
min: 0.06344
max: 0.071558
mean: 0.06660486
|
min: 0.069612
max: 0.07776
mean: 0.07274253
|
min: 0.06478
max: 0.074391
mean: 0.06826856
|
min: 0.01694
max: 0.036495
mean: 0.01901237
|
Kitchen Set
This asset provides a complex kitchen scene.
The Kitchen Set asset can be downloaded here.
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.048359
max: 0.090553
mean: 0.05856095
|
min: 0.047789
max: 0.076912
mean: 0.05592291
|
min: 0.052998
max: 0.08932
mean: 0.0620716
|
min: 0.052111
max: 0.079116
mean: 0.05933257
|
Render first image |
min: 0.217668
max: 0.243507
mean: 0.22705873
|
min: 0.218671
max: 0.237097
mean: 0.22637969
|
min: 0.232486
max: 0.265385
mean: 0.24223985
|
min: 0.224114
max: 0.25887
mean: 0.23255547
|
Close stage |
min: 0.008124
max: 0.021591
mean: 0.01004208
|
min: 0.008197
max: 0.02467
mean: 0.01009473
|
min: 0.008709
max: 0.025533
mean: 0.01088784
|
min: 0.008909
max: 0.023343
mean: 0.01068377
|
Shut down Hydra |
min: 0.033784
max: 0.038803
mean: 0.03593167
|
min: 0.030789
max: 0.0356
mean: 0.03314213
|
min: 0.028225
max: 0.032347
mean: 0.03045488
|
min: 0.019148
max: 0.023304
mean: 0.0201556
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.085585
max: 0.109018
mean: 0.09204828
|
min: 0.081513
max: 0.114839
mean: 0.0883299
|
min: 0.092551
max: 0.113511
mean: 0.10160631
|
min: 0.082237
max: 0.11898
mean: 0.09287512
|
Render first image |
min: 0.259301
max: 0.273705
mean: 0.26457672
|
min: 0.261286
max: 0.274061
mean: 0.26642707
|
min: 0.254831
max: 0.315395
mean: 0.26072938
|
min: 0.261848
max: 0.278341
mean: 0.26693734
|
Close stage |
min: 0.002021
max: 0.003675
mean: 0.00247759
|
min: 0.001925
max: 0.00337
mean: 0.00238511
|
min: 0.002041
max: 0.003517
mean: 0.00242477
|
min: 0.002244
max: 0.013124
mean: 0.00314378
|
Shut down Hydra |
min: 0.01651
max: 0.031314
mean: 0.02202539
|
min: 0.015542
max: 0.026238
mean: 0.02142616
|
min: 0.013821
max: 0.024521
mean: 0.02036446
|
min: 0.008489
max: 0.01332
mean: 0.0111194
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.10763
max: 0.123955
mean: 0.11461558
|
min: 0.099474
max: 0.116492
mean: 0.10618527
|
min: 0.108297
max: 0.124659
mean: 0.11513973
|
min: 0.100437
max: 0.117363
mean: 0.10770767
|
Render first image |
min: 0.387877
max: 0.417364
mean: 0.39946686
|
min: 0.385847
max: 0.415152
mean: 0.39539667
|
min: 0.387191
max: 0.417565
mean: 0.39784305
|
min: 0.408609
max: 0.440225
mean: 0.42388750000000003
|
Close stage |
min: 0.019835
max: 0.032572
mean: 0.02471053
|
min: 0.018316
max: 0.029745
mean: 0.02298045
|
min: 0.018545
max: 0.028232
mean: 0.022193459999999998
|
min: 0.019265
max: 0.025882
mean: 0.021972039999999998
|
Shut down Hydra |
min: 0.045756
max: 0.054098
mean: 0.04928151
|
min: 0.041524
max: 0.04916
mean: 0.04623087
|
min: 0.03841
max: 0.046465
mean: 0.04293331
|
min: 0.024264
max: 0.03221
mean: 0.02778951
|
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 |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.278403
max: 0.377748
mean: 0.3208941
|
min: 0.241601
max: 0.318423
mean: 0.27954225
|
min: 0.2802
max: 0.376605
mean: 0.32259145
|
min: 0.256765
max: 0.361747
mean: 0.29073568
|
Render first image |
min: 6.002758
max: 6.374273
mean: 6.17849757
|
min: 5.810938
max: 6.169416
mean: 5.93609673
|
min: 6.129386
max: 6.508681
mean: 6.31419199
|
min: 5.878193
max: 6.199501
mean: 6.032109
|
Close stage |
min: 0.107958
max: 0.13805
mean: 0.11300532
|
min: 0.106509
max: 0.130405
mean: 0.1123268
|
min: 0.11729
max: 0.148149
mean: 0.12301499
|
min: 0.117633
max: 0.141009
mean: 0.12275274
|
Shut down Hydra |
min: 0.542178
max: 0.844146
mean: 0.65962838
|
min: 0.563382
max: 0.868353
mean: 0.70578134
|
min: 0.787496
max: 0.966843
mean: 0.8351985
|
min: 0.721337
max: 0.832328
mean: 0.76796437
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.401131
max: 0.479708
mean: 0.43101433
|
min: 0.374424
max: 0.477764
mean: 0.42913736
|
min: 0.314381
max: 0.548683
mean: 0.38178418
|
min: 0.270938
max: 0.495761
mean: 0.32837854
|
Render first image |
min: 3.247161
max: 3.697333
mean: 3.51718546
|
min: 3.196071
max: 3.900934
mean: 3.59978127
|
min: 3.225269
max: 4.021977
mean: 3.64870661
|
min: 2.947595
max: 3.355964
mean: 3.1390929
|
Close stage |
min: 0.03243
max: 0.044327
mean: 0.0365513
|
min: 0.032126
max: 0.050107
mean: 0.03739121
|
min: 0.027333
max: 0.037311
mean: 0.03149304
|
min: 0.036886
max: 0.048157
mean: 0.04284853
|
Shut down Hydra |
min: 0.135475
max: 0.170974
mean: 0.15313856
|
min: 0.140115
max: 0.166896
mean: 0.15124781
|
min: 0.132456
max: 0.161829
mean: 0.1425976
|
min: 0.645385
max: 0.705917
mean: 0.67291069
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.397166
max: 0.587801
mean: 0.41254627
|
min: 0.378314
max: 0.523401
mean: 0.39922649
|
min: 0.384181
max: 0.418874
mean: 0.40105012
|
min: 0.370082
max: 0.420276
mean: 0.38372055
|
Render first image |
min: 7.648056
max: 8.347713
mean: 7.87855149
|
min: 7.585018
max: 8.511921
mean: 7.9203183600000004
|
min: 7.882253
max: 8.234776
mean: 7.9930347
|
min: 6.528975
max: 6.862216
mean: 6.67334651
|
Close stage |
min: 0.340327
max: 0.432633
mean: 0.38996225
|
min: 0.317643
max: 0.496103
mean: 0.3783046
|
min: 0.340219
max: 0.401597
mean: 0.36910621
|
min: 0.284853
max: 0.339215
mean: 0.31703378
|
Shut down Hydra |
min: 0.351016
max: 0.632485
mean: 0.50048855
|
min: 0.377651
max: 0.643099
mean: 0.52348612
|
min: 0.349316
max: 0.618448
mean: 0.4948539
|
min: 0.538983
max: 0.606915
mean: 0.56369959
|
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 |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.051093
max: 0.059576
mean: 0.05292827
|
min: 0.049433
max: 0.068931
mean: 0.05256769
|
min: 0.055556
max: 0.075718
mean: 0.05865626
|
min: 0.056168
max: 0.073774
mean: 0.05927994
|
Render first image |
min: 7.106522
max: 7.491846
mean: 7.30991904
|
min: 7.113698
max: 7.396277
mean: 7.21710089
|
min: 7.015587
max: 7.460851
mean: 7.29381541
|
min: 7.130766
max: 7.529061
mean: 7.29760169
|
Close stage |
min: 0.033988
max: 0.038964
mean: 0.03618142
|
min: 0.034322
max: 0.041997
mean: 0.03567777
|
min: 0.041617
max: 0.05171
mean: 0.04280516
|
min: 0.044499
max: 0.067651
mean: 0.04582923
|
Shut down Hydra |
min: 1.001618
max: 1.119256
mean: 1.04177241
|
min: 0.796864
max: 1.011868
mean: 0.83473395
|
min: 0.648444
max: 1.225414
mean: 0.99355296
|
min: 0.633035
max: 1.193225
mean: 0.96738958
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.103792
max: 0.115776
mean: 0.10550355
|
min: 0.098452
max: 0.103779
mean: 0.09996708
|
min: 0.107984
max: 0.113351
mean: 0.10950673
|
min: 0.09815
max: 0.101009
mean: 0.09969502
|
Render first image |
min: 4.825569
max: 5.729761
mean: 5.17014079
|
min: 4.78398
max: 5.725201
mean: 5.1418585
|
min: 4.742426
max: 5.715785
mean: 5.17064111
|
min: 4.833895
max: 5.639673
mean: 5.1954623
|
Close stage |
min: 0.003239
max: 0.007467
mean: 0.00347463
|
min: 0.003191
max: 0.008941
mean: 0.00384508
|
min: 0.003213
max: 0.008801
mean: 0.00360833
|
min: 0.003066
max: 0.005717
mean: 0.00330036
|
Shut down Hydra |
min: 0.121472
max: 0.188133
mean: 0.13085061
|
min: 0.104195
max: 0.171836
mean: 0.12383931
|
min: 0.119972
max: 0.163464
mean: 0.12754035
|
min: 0.949596
max: 1.114957
mean: 0.96273603
|
Metric |
26.03 |
26.05 |
26.08 |
26.11 |
|---|---|---|---|---|
Open stage |
min: 0.125819
max: 0.141703
mean: 0.1328517
|
min: 0.116097
max: 0.131661
mean: 0.12227848
|
min: 0.123235
max: 0.160999
mean: 0.13125285
|
min: 0.117435
max: 0.13422
mean: 0.12496634
|
Render first image |
min: 7.307756
max: 9.21315
mean: 8.49179167
|
min: 8.443403
max: 9.740621
mean: 9.20294465
|
min: 8.515424
max: 10.411091
mean: 9.12166075
|
min: 7.348574
max: 9.107083
mean: 8.11825876
|
Close stage |
min: 0.096086
max: 0.127534
mean: 0.1035804
|
min: 0.095105
max: 0.121288
mean: 0.10279636
|
min: 0.095786
max: 0.13272
mean: 0.10288532
|
min: 0.094705
max: 0.108183
mean: 0.09954364
|
Shut down Hydra |
min: 0.354215
max: 0.457584
mean: 0.41048186
|
min: 0.349249
max: 0.474159
mean: 0.41690432
|
min: 0.349943
max: 0.460264
mean: 0.41932649
|
min: 0.443257
max: 0.499824
mean: 0.46239057
|
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.