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.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.108347
max: 0.142785
mean: 0.12522259
|
Render first image |
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
|
min: 1.132672
max: 5.047174
mean: 1.18685452
|
Close stage |
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
|
min: 0.000627
max: 0.00862
mean: 0.00108197
|
Shut down Hydra |
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
|
min: 0.038391
max: 0.046654
mean: 0.04102367
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.12139
max: 0.129204
mean: 0.12521404
|
Render first image |
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
|
min: 0.787785
max: 1.314961
mean: 0.80603199
|
Close stage |
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
|
min: 0.000138
max: 0.000498
mean: 0.0001761
|
Shut down Hydra |
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
|
min: 0.012981
max: 0.022092
mean: 0.01737945
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.261372
max: 0.281605
mean: 0.27079815
|
Render first image |
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
|
min: 2.275701
max: 8.259477
mean: 2.43007551
|
Close stage |
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
|
min: 0.000341
max: 0.000752
mean: 0.00045084
|
Shut down Hydra |
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
|
min: 0.069612
max: 0.07776
mean: 0.07274253
|
Kitchen Set
This asset provides a complex kitchen scene.
The Kitchen Set asset can be downloaded here.
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.047789
max: 0.076912
mean: 0.05592291
|
Render first image |
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
|
min: 0.218671
max: 0.237097
mean: 0.22637969
|
Close stage |
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
|
min: 0.008197
max: 0.02467
mean: 0.01009473
|
Shut down Hydra |
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
|
min: 0.030789
max: 0.0356
mean: 0.03314213
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.081513
max: 0.114839
mean: 0.0883299
|
Render first image |
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
|
min: 0.261286
max: 0.274061
mean: 0.26642707
|
Close stage |
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
|
min: 0.001925
max: 0.00337
mean: 0.00238511
|
Shut down Hydra |
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
|
min: 0.015542
max: 0.026238
mean: 0.02142616
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.099474
max: 0.116492
mean: 0.10618527
|
Render first image |
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
|
min: 0.385847
max: 0.415152
mean: 0.39539667
|
Close stage |
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
|
min: 0.018316
max: 0.029745
mean: 0.02298045
|
Shut down Hydra |
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
|
min: 0.041524
max: 0.04916
mean: 0.04623087
|
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.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.241601
max: 0.318423
mean: 0.27954225
|
Render first image |
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
|
min: 5.810938
max: 6.169416
mean: 5.93609673
|
Close stage |
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
|
min: 0.106509
max: 0.130405
mean: 0.1123268
|
Shut down Hydra |
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
|
min: 0.563382
max: 0.868353
mean: 0.70578134
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.374424
max: 0.477764
mean: 0.42913736
|
Render first image |
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
|
min: 3.196071
max: 3.900934
mean: 3.59978127
|
Close stage |
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
|
min: 0.032126
max: 0.050107
mean: 0.03739121
|
Shut down Hydra |
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
|
min: 0.140115
max: 0.166896
mean: 0.15124781
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.378314
max: 0.523401
mean: 0.39922649
|
Render first image |
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
|
min: 7.585018
max: 8.511921
mean: 7.9203183600000004
|
Close stage |
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
|
min: 0.317643
max: 0.496103
mean: 0.3783046
|
Shut down Hydra |
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
|
min: 0.377651
max: 0.643099
mean: 0.52348612
|
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.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.049433
max: 0.068931
mean: 0.05256769
|
Render first image |
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
|
min: 7.113698
max: 7.396277
mean: 7.21710089
|
Close stage |
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
|
min: 0.034322
max: 0.041997
mean: 0.03567777
|
Shut down Hydra |
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
|
min: 0.796864
max: 1.011868
mean: 0.83473395
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.098452
max: 0.103779
mean: 0.09996708
|
Render first image |
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
|
min: 4.78398
max: 5.725201
mean: 5.1418585
|
Close stage |
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
|
min: 0.003191
max: 0.008941
mean: 0.00384508
|
Shut down Hydra |
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
|
min: 0.104195
max: 0.171836
mean: 0.12383931
|
Metric |
25.08 |
25.11 |
26.03 |
26.05 |
|---|---|---|---|---|
Open stage |
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
|
min: 0.116097
max: 0.131661
mean: 0.12227848
|
Render first image |
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
|
min: 8.443403
max: 9.740621
mean: 9.20294465
|
Close stage |
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
|
min: 0.095105
max: 0.121288
mean: 0.10279636
|
Shut down Hydra |
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
|
min: 0.349249
max: 0.474159
mean: 0.41690432
|
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.