src/tests/restricted_traces/restricted_trace_perf.py


Log

Author Commit Date CI Message
Cody Northrop 1f69f580 2022-11-18T14:33:20 Perf tests: Add --fixed-test-time-with-warmup Warmup trials combined with fixed-test-time was broken recently. It was already fragile and only worked when parameters were provided in the right order. On Android we're relying on this combination to get steady results without hitting thermal limits. To address this: - Add a new parameter that encapsulates the combination - ASSERT that flags aren't provided in unsupported combinations Test: python3 restricted_trace_perf.py --fixedtime 10 Bug: angleproject:7755 Change-Id: I56fce1f65d4f0538e623951163a9c8736cb3fb03 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4027282 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 11a3e06b 2022-10-24T11:26:05 Android: Fix restricted_trace_perf.py Test: restricted_trace_perf.py --fixedtime 10 --power --loop-count 5 Bug: angleproject:7755 Change-Id: Idbd2ccc73bd7409e2538346897b254403c1fd5d6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3975592 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Jamie Madill a41c6173 2022-10-16T08:28:53 Simplify trace test names. Originally we had a lot of conditionally enabled test configs in angle_perftests, that we enabled behind a flag because the total runtime would be too large if we left everything enabled. This CL switches to using a single test set, one for each trace, and using a the same command-line API we use in dEQP and the ANGLE samples to pick a single configuration. This makes it easier to pick exactly what configurations you want from the command line. Because we only run one configuration each time, we don't need to specialize the test name to include the configuration info. We can also simplify TracePerfTest -> TraceTest since these tests are run for both perf and correctness. Old name: TracePerfTest.Run/vulkan_trex_200 New name: TraceTest.trex_200 Example for tests that don't use default arguments: Old args: --enable-all-trace-tests Old name: TracePerfTest.Run/native_offscreen_trex_200 New args: --use-gl=native --offscreen New name: TraceTest.trex_200 Bug: angleproject:7755 Change-Id: Id93cf5725eff2e2c6b3b14804bc2902f38306e7e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3966535 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Cody Northrop c09d1475 2022-10-05T14:52:40 restricted_trace_perf: Switch to --warmup-trials Restore functionality after updates in: https://chromium-review.googlesource.com/c/angle/angle/+/3906144 Test: restricted_trace_perf.py Bug: angleproject:6970 Change-Id: I0632907b6dab0c0ad91536d42cac8eaf433f4da7 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3936966 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com>
Cody Northrop e577353d 2022-09-29T17:20:22 restricted_trace_perf: Sleep between tests option In order to get the most "real world" numbers possible, we're going to start running with clocks unlocks on Pixel devices. To avoid thermal throttling, allow for a pause between each test. Test: restricted_trace_perf.py Bug: angleproject:6970 Change-Id: If3f813cf1eadab6ea56122a3945f694eed79ed9a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3936965 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Cody Northrop 503b250a 2022-08-31T20:06:57 restricted_trace_perf: Use Android platform loader With persistent shader caching enabled, we now need to run the trace tests exclusively in "native" mode, with ANGLE as the driver. The cache is provided via the EGL_ANDROID_blob_cache extension, and it is only enabled using Android's EGL loader. Test: restricted_trace_perf.py Bug: angleproject:6970 Change-Id: If791bfe199217dcc80105b55d8769fe43ffd9739 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3868310 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 9e0a7be6 2022-05-11T10:08:57 Traces: Update restricted_trace_perf.py This CL includes the following changes: * Fixes for swapped device power rails * Add process memory stats * Add shared column widths This version of the script was used for numbers generated on 2022-05-20. Test: restricted_trace_perf.py Bug: angleproject:6970 Change-Id: Idb2cb9266bb6168315b53164534a10b1df47a9da Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3661363 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Amirali Abdolrashidi edd331eb 2022-04-28T09:47:51 Traces: Add a device arg to restricted_trace_perf In case of multiple available devices, we can use either this argument or setting $ANDROID_SERIAL to select the device to run tests on. * Added the option to run restricted_trace_perf with more than one connected device. * The device serial can be entered either by using the --device arg or setting $ANDROID_SERIAL. If both are used at the same time, the former has more priority. * Neither is required if there is only one connected device. Bug: angleproject:6970 Change-Id: Id80398b82ea5b905f3dbfa4651d5f5246a3ccbe8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3615082 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Cody Northrop 5cffbe96 2022-03-08T14:51:11 Android: Track peak GPU memory in restricted_trace_perf We've noticed that the script reports higher memory usage than recorded with local runs with similar steps. We isolated this to ANGLE using much higher peak memory when the trace loads, but then evens out after some time, nearing parity with native. To track this for optimization, we are going to split the memory tracking into: - peak GPU memory usage - sustained GPU memory usage This CL changes the script to: * Measure peak GPU memory usage by tracking total GPU memory used throughout the trace, returning the highest. * Measure sustained GPU memory usage by tracking usage from the middle of the trace (based on run time), returning the average. * Update the frequency of memory sampling by reducing sleep to 0.25 seconds instead of 1.0 second. As a data point, here is what angry_birds_2_1500 reports on Pixel 6: Before: 602599651 bytes After: 672231424 bytes (peak) 360621537 bytes (sustained) Bug: angleproject:6970 Change-Id: I227e30abeb6a5f28fe7230a2979441c3693234f1 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3511314 Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 3b4548bb 2022-02-02T15:19:06 Traces: Add restricted_trace_perf.py script for Android We've been using restricted_trace_perf.py to gather numbers on Android devices. The script uses angle_perftests and records: - Wall time per frame - GPU time per frame - CPU time per frame - GPU power per frame - CPU power per frame - GPU memory per frame It reports numbers to the terminal and creates a spreadsheet at the end. A typical command to run it would be: python3 restricted_trace_perf.py --fixedtime 10 --power \ --output-tag <tag> --loop-count 5 Power numbers are only available on Pixel 6 as we read directly from power rails. Also included is a gpumem shell script run on the Android device, and a power_denoising script that deactivates a number of services to reduce variance. The former is invoked automatically, the latter is only invoked by hand. Bug: angleproject:6970 Change-Id: I11fd346790565b5efcda228f43dc36dd41025642 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3432821 Reviewed-by: Roman Lavrov <romanl@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Cody Northrop <cnorthrop@google.com>