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: CentOS Linux 7

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

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

  • RAM: 117GB

  • GPU: NVIDIA RTXA6000-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 of all metrics on this page was performed for the 25.11 release because of a change in “create first image” timing methodology.

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.02

25.05

25.08

25.11

Open stage

min: 0.115236
max: 0.138383
mean: 0.12241002
min: 0.107972
max: 0.121466
mean: 0.11391579
min: 0.107262
max: 0.121741
mean: 0.11261217
min: 0.130829
max: 0.150694
mean: 0.13686351

Render first image

min: 1.014073
max: 1.174135
mean: 1.03070467
min: 1.158713
max: 1.244631
mean: 1.18729007
min: 1.158948
max: 1.267224
mean: 1.19264357
min: 1.238056
max: 6.023667
mean: 1.30996932

Close stage

min: 0.000419
max: 0.00088
mean: 0.00063121
min: 0.000403
max: 0.00098
mean: 0.00063492
min: 0.00041
max: 0.000872
mean: 0.00063941
min: 0.000299
max: 0.000758
mean: 0.00053994

Shut down Hydra

min: 0.015888
max: 0.020628
mean: 0.01816711
min: 0.019347
max: 0.025039
mean: 0.0214453
min: 0.019558
max: 0.025509
mean: 0.02220578
min: 0.01957
max: 0.026398
mean: 0.02231206
macOS Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.09158
max: 0.09794
mean: 0.09362494
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

Render first image

min: 0.707172
max: 0.743281
mean: 0.72663081
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

Close stage

min: 0.000227
max: 0.000438
mean: 0.00027077
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

Shut down Hydra

min: 0.010882
max: 0.018872
mean: 0.01490757
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
Windows Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.25587
max: 0.305149
mean: 0.26487604
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

Render first image

min: 1.992974
max: 2.180966
mean: 2.07286652
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

Close stage

min: 0.001053
max: 0.001517
mean: 0.0011917100000000001
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

Shut down Hydra

min: 0.054428
max: 0.061991
mean: 0.05740973
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

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.02

25.05

25.08

25.11

Open stage

min: 0.073168
max: 0.145009
mean: 0.09162708
min: 0.074726
max: 0.144169
mean: 0.09645783
min: 0.068395
max: 0.130942
mean: 0.08763188
min: 0.067288
max: 0.141716
mean: 0.08831019

Render first image

min: 0.226054
max: 0.265641
mean: 0.24998339
min: 0.22368
max: 0.278274
mean: 0.25676237
min: 0.232171
max: 0.277937
mean: 0.25756001
min: 0.269004
max: 0.370133
mean: 0.3244681

Close stage

min: 0.005919
max: 0.009146
mean: 0.00745146
min: 0.006153
max: 0.00939
mean: 0.00767703
min: 0.006141
max: 0.011938
mean: 0.00778345
min: 0.006306
max: 0.00948
mean: 0.00794424

Shut down Hydra

min: 0.009327
max: 0.01277
mean: 0.01035587
min: 0.019028
max: 0.025645
mean: 0.02086288
min: 0.022091
max: 0.028661
mean: 0.02401296
min: 0.01889
max: 0.027431
mean: 0.02081045
macOS Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.066191
max: 0.092933
mean: 0.07308952
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

Render first image

min: 0.265819
max: 0.27916
mean: 0.27261008999999997
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

Close stage

min: 0.002104
max: 0.003745
mean: 0.00246378
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

Shut down Hydra

min: 0.008501
max: 0.018295
mean: 0.01436839
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
Windows Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.107719
max: 0.139995
mean: 0.11558934
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

Render first image

min: 0.361473
max: 0.394963
mean: 0.37519973
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

Close stage

min: 0.017472
max: 0.025552
mean: 0.02119207
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

Shut down Hydra

min: 0.022411
max: 0.028659
mean: 0.0245225
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

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.02

25.05

25.08

25.11

Open stage

min: 0.371357
max: 0.548271
mean: 0.45959872
min: 0.548911
max: 0.678412
mean: 0.6064023
min: 0.370885
max: 0.607741
mean: 0.49451881
min: 0.433278
max: 0.610651
mean: 0.49882659

Render first image

min: 5.28362
max: 6.896981
mean: 6.13319128
min: 5.766128
max: 6.884635
mean: 6.19572927
min: 5.739026
max: 6.745488
mean: 6.14509327
min: 6.466451
max: 7.045572
mean: 6.64202786

Close stage

min: 0.077038
max: 0.092187
mean: 0.08111201
min: 0.073073
max: 0.088197
mean: 0.07835102000000001
min: 0.072466
max: 0.090774
mean: 0.07892472
min: 0.071978
max: 0.084795
mean: 0.07726876

Shut down Hydra

min: 0.055039
max: 0.079683
mean: 0.06659816
min: 0.102756
max: 0.125685
mean: 0.11473493
min: 0.112753
max: 0.145573
mean: 0.12437892
min: 0.138889
max: 0.1682
mean: 0.15461057
macOS Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.424971
max: 0.486238
mean: 0.4425593
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

Render first image

min: 2.64057
max: 3.143005
mean: 2.89778935
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

Close stage

min: 0.034361
max: 0.049179
mean: 0.03895347
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

Shut down Hydra

min: 0.095747
max: 0.118626
mean: 0.10839144
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
Windows Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.380082
max: 0.426562
mean: 0.39697795
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

Render first image

min: 7.614644
max: 8.894503
mean: 7.89112705
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

Close stage

min: 0.289758
max: 0.374639
mean: 0.33625491
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

Shut down Hydra

min: 0.210191
max: 0.448725
mean: 0.29269323
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

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.02

25.05

25.08

25.11

Open stage

min: 0.059526
max: 0.107525
mean: 0.07169211
min: 0.057381
max: 0.104375
mean: 0.06832833
min: 0.057288
max: 0.107432
mean: 0.06790111
min: 0.055827
max: 0.112216
mean: 0.06557084

Render first image

min: 10.264518
max: 10.814635
mean: 10.47099948
min: 10.309351
max: 10.822443
mean: 10.51112802
min: 10.277389
max: 10.730336
mean: 10.50606514
min: 8.860546
max: 9.682169
mean: 9.46078172

Close stage

min: 0.008411
max: 0.010604
mean: 0.00929994
min: 0.008767
max: 0.010335
mean: 0.00938169
min: 0.00855
max: 0.009954
mean: 0.00924602
min: 0.008235
max: 0.011516
mean: 0.00891237

Shut down Hydra

min: 0.040028
max: 0.181531
mean: 0.06746142
min: 0.045026
max: 0.16766
mean: 0.07075642
min: 0.047149
max: 0.145957
mean: 0.06069932
min: 0.047152
max: 0.201449
mean: 0.09379694
macOS Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.089092
max: 0.093273
mean: 0.09061327
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

Render first image

min: 4.863602
max: 5.776998
mean: 5.27400174
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

Close stage

min: 0.003309
max: 0.012977
mean: 0.00439985
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

Shut down Hydra

min: 0.09596
max: 0.375403
mean: 0.30230101
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
Windows Metrics (min/max/mean in seconds)

Metric

25.02

25.05

25.08

25.11

Open stage

min: 0.143463
max: 0.167457
mean: 0.15291026
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

Render first image

min: 9.360458
max: 11.134516
mean: 10.02221568
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

Close stage

min: 0.094321
max: 0.117807
mean: 0.10088475
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

Shut down Hydra

min: 0.310136
max: 0.4116
mean: 0.36513765
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

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.