src/tests/restricted_traces/restricted_trace_perf.py


Log

Author Commit Date CI Message
Shashank Sharma ca893fdf 2025-06-23T13:41:33 Search only for png files while pulling screenshot restricted_trace_perf.py should only look for png files in temp dir and then assert only for 1 screenshot to be present. Bug: b/427963936 Change-Id: I0692aded39f7c3bd5b0c30ee4a7b613db08eac04 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6680727 Auto-Submit: Shashank Sharma <shawshanks@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Cody Northrop e7118451 2025-04-15T09:55:48 restricted_trace_perf: Script fixes Minor fixes. Tests: restricted_trace_perf Bug: b/404239853 Change-Id: I429f2c69c47bd9a8dc725ac3f499143827755de6 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6455541 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 2657dba2 2025-03-17T10:07:52 restricted_trace_perf: Use run-as when needed On non-rooted devices, commands that access storage need to use run-as. Test: restricted_trace_perf.py Bug: b/404239853 Change-Id: I38bc54c4f4eb9c986106e1773cb1e0796577eaeb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6361299 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Cody Northrop fa0de0dd 2025-01-27T17:32:49 restricted_trace_perf: Support --fps-limit Simply passes the flag and value through. Test: restricted_trace_perf.py --fps-limit 30 ... Bug: b/376300037 Change-Id: I344492944babed33edcbdae6b2906795d31715e4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6204802 Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Cody Northrop f094a81e 2025-01-07T14:08:11 restricted_trace_perf: Add screenshot support This update allows users to capture screenshots when using restricted_trace_perf.py. * Two new optional arguments are added. If either is set, a screenshot will be captured. --screenshot-dir (host directory to write screenshots, default CWD) --screenshot-frame (specify desired frame, default is 1 or KeyFrame) * If screenshots are requested, we create a temp dir on the device, pull the screenshot, then delete the dir * The screenshot is renamed during pull to reflect the renderer that created it. Otherwise they are all named "native" since we convince the platform to use its default driver, allowing calls to go through the EGL loader. Test: restricted_trace_perf.py --screenshot-dir ~/Screenshots --screenshot-frame 2 Bug: b/377325803 Change-Id: I5be7a1e2f9f557668bff51349654c8c4e093b47a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6154857 Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Cody Northrop 75a64561 2024-12-02T20:06:29 restricted_trace_perf: Windows fixes * Drops some unavailable (and unused) imports * Allows specifying --angle-version to avoid git failures Flag created by solti@google.com in http://crrev/c/6037489 Bug: b/376300037 Change-Id: I0c63e966c60998848cdbc8f7a9c414adc0e00d14 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6067184 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 11495e55 2024-11-15T18:46:17 Perf tests: restricted_trace_perf.py uses android_helper helpers Bug: b/376300037 Change-Id: Ie4fba3d9300fa3b96f269303f06dee3630f068c9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6022181 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Roman Lavrov 54e8e665 2024-11-12T12:53:54 Trace tests: generate and use trace list according to gn args Generates out/<config>/gen/trace_list.json which contains the list of traces included in the build according to the angle_restricted_traces gn arg (or all traces if not set). Test runner uses that file instead of the full restricted_traces.json. Android runner pushes that file to the device to the usual location (e.g. /sdcard/chroimum_tests_root/gen/trace_list.json) This also fixes the issue where `angle_trace_tests --list-tests` lists all traces, not just those that were selected with the gn arg. Similarly, running all traces without a filter would be limited to the same list. This transitively applies to trace bundles. Bug: b/376923930 Change-Id: I63506a074d766a51b860472f7211842f8a080ecd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011956 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop 2c7e9830 2024-11-04T10:05:25 restricted_trace_perf: Setup and wrapper support This CL adds support for installing and setting up traces. Also allows running via the wrapper in http://crrev/c/5985570 With this change, if you run without using the wrapper, you must provide the --build-dir flag. It allows running the script from any directory: --build-dir ../../../out/Android Bug: b/376300037 Change-Id: I2259ee120b2af5e1917a2a57a27fa3dcfca761e8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5983806 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 7bb1e0f6 2024-10-29T13:18:49 restricted_trace_perf: Allow use of system ANGLE libs This change allows the perf script to use built in ANGLE libs, including from the system partition, instead of requiring a separate package. By default, the script will now use the ANGLE libs packaged in the test APK (com.android.angle.test). OpenGL/EGL calls will still go though the platform EGL loader, but you no longer need to install a separate ANGLE APK containing libs. To use the system libs, add the following flag: --angle-package system You can use it to point to *any* package that is queryable and contains ANGLE libraries. To get the previous behavior, you'd use: --angle-package org.chromium.angle Also two small unrelated fixes: * Fix typo when clearing shader cache * Broaden the 'MODEL' skip in thermal throttling Bug: b/376300037 Change-Id: I762cfd7516026e903a6a5de2949d50e96e766d48 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5976899 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Solti f0a66ba2 2024-10-09T00:26:15 remove angle_gl_driver_all_angle when resetting Test: presubmit Bug: b/367348883 Change-Id: Ief115403cd2a908873750c97f416255e61410893 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918343 Commit-Queue: Solti Ho <solti@google.com> Auto-Submit: Solti Ho <solti@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Roman Lavrov dd66a284 2024-10-04T13:10:14 Perf tests: custom throttling excludes VIRTUAL-SKIN*-MODEL-* These seems to be using different units and get stuck in throttling. Also ignore VIRTUAL-SKIN*-CHARGE-* which I think was the intent but the check ended up in the wrong place. Bug: b/371573999 Change-Id: I2a9e6fbbb41bebfc5d9d85ee187f4f0918dd5e61 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905236 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 0b78963d 2024-06-18T12:38:38 Perf tests: add thermalservice custom temp throttling E.g. --custom-throttling-thermalservice-temp=36 IThermal interface isn't available on all devices. thermalservice is another way to get similar data, but with its own limitations (for example, on Pixel we don't see CPU ODPM temps there while we do get them with IThermal). Unlike --custom-throttling-temp that we use on Pixel, this flag does not attempt to disable vendor throttling (not sure there is even a way to do that outside of Pixel). Vendor throttling can affect perf results, higher custom temps increase odds of that happening mid-way during a trial. Bug: b/347956784 Change-Id: I1166e07e4a5c88417eb379d5cb6a7440b169d073 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5639336 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop ff5dfad5 2024-09-20T11:23:07 restricted_trace_perf: Change loop order Before this CL we are doing: For each renderer For each loopcount For each trace Do the test Write out summary of all results We don't get useful data unless the entire script completes. We are seeing some devices disconnect more often, so let's change the order to preserve data. The loop becomes: For each trace For each iteration For each renderer Do the test Write out summary for the trace Output becomes: native_1945_air_force vulkan_1945_air_force native_1945_air_force vulkan_1945_air_force etc. The final output is unchanged. Raw data will be in a different order. Bug: b/369203495 Change-Id: I09b189b5c578dd520123e4ac850018e75b219aa8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5884633 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Cody Northrop 1a97e039 2024-09-17T11:40:29 restricted_trace_perf: Support multiple users This CL adds some tracking data for the current user and storage locations. It moves away from using sdcard at all. Test: restricted_trace_perf.py with non-default user Bug: b/361388557 Change-Id: Ifff9b5e4ba9b184cc5a4339417723ecb7d35a4a8 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5869168 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 56ea2edc 2024-08-30T11:01:48 Traces: Update regex for power rails Bug: b/354006406 Change-Id: If014c49ccdbb6e0a57c0dc88833511049c3578ea Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5828131 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 2f28264e 2024-08-15T18:05:43 Trace perf: add origin/main revision to summary if != HEAD Bug: None Change-Id: Iacacd98993d7dc5fbea8489b46236e939f465689 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5792199 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Cody Northrop a5db20f7 2024-02-21T10:48:26 Traces: Switch to regex for power rails The rails have been rearranged on some devices. Update the way we scan for output to find them in either case. Bug: angleproject:354006406 Change-Id: Ia3999fc2c07a726f4832e451af93a40949f87335 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5722949 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Cody Northrop 44bdc2af 2024-04-23T19:43:29 restricted_trace_perf: Write summary for single renderer For use when generating spreadsheets focused on Vulkan. Previously the script would exit without generating a CSV file unless there were two renderers to compare. Test: restricted_trace_perf --renderer vulkan Bug: b/317411251 Change-Id: Ic9872599edb38c738112265b1ce7f252cf3f966a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5508315 Reviewed-by: Roman Lavrov <romanl@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 6d589ff6 2024-02-12T15:26:54 Trace perf: support custom thermal throttling for tests Vendor throttling kicks in rather quickly and starts affecting e.g. cpu/gpu freqs, which can be hard to predict and increases variance in our tests. This change implements support for disabling vendor throttling (re-enabled at the end, including ctrl-C) and using a custom temperature threshold for VIRTUAL-SKIN sensors, which are checked after each test runs. This allows to set the threshold to higher values and run the device hotter without touching cpu/gpu freqs while running tests, and then dissipate heat (if necessary) by sleeps between tests. This also allows to reduce fixed-time sleeps between tests as we're monitoring the temperatures. Only some of our trace tests heat up the device sufficiently to actually require throttling, and with active cooling I was able to avoid sleeps almost through the entire run. However, sleeps might also be needed to prevent battery from discharging, so also add a flag to sleep until a given battery level is reached after each test. Example usage, sleeping between tests until all sensors are below 39C but also battery level is at least 30%: --custom-throttling-temp=39 --min-battery-level=30 Bug: b/315042901 Change-Id: I7660fc36b1103e20e4cc97312d396f3667739481 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5288455 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Roman Lavrov 989b1143 2023-11-28T14:06:06 Trace perf: logcat output captured line-buffered I've seen warmup detection getting stuck intermittently not seeing the log line despite the line being there. Hopefully this fixes. Bug: b/291604008 Change-Id: I10da772c485f7b1badd34efc00c20fc6d55139cb Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5067855 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Cody Northrop ee4b7a27 2023-11-03T09:06:50 Add --memory to restricted_trace_perf.py Detailed analysis of our power results showed that even checking memory can impact power. This CL makes memory measurement optional (like power) to enhance power measurements. Test: restricted_trace_perf.py --memory --power Bug: b/292249127 Change-Id: I69b34d378ca923de42af59fc1b532a1d766b4391 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5066797 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Roman Lavrov <romanl@google.com>
Roman Lavrov dcd62fc4 2023-08-31T15:35:39 Trace perf: clear blob cache before each test Cache eviction can happen during warmup causing cache misses while testing. Significant cycles are being spent evicting cache entries and throwing off power measurement. Since this is already a synthetic environment where we're lumping in a bunch of caches together, clear it between tests so that warmup correctly populates and no cache misses occur within the test run. If we clear the cache before warmup and everything fits, no eviction happens and we hit the cache every time post-warmup. This also improves reproducibility of perf results as they no longer depend on the specific cache state before running a particular test, the order in which tests are run etc. Also fixes acessing unset var when running without --power. Bug: b/298028816 Change-Id: I704073f70d8859e19a78b23d397e68f5836f3bb2 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4834073 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 865eceaa 2023-08-21T15:17:02 Trace perf: power metric uWs/frame -> W, exclude startup&teard Switching from uWs/frame to W, which is easier to measure as we don't need to know how many frames were rendered between the measurements and just need to avoid warmup, turndown. Also, W is a more "natural" metric as it reports actual power usage that can be reasoned about in terms of device thermals etc. Changing starting point to post-warmup by waiting for test message in logcat. The logcat -> script delay seems very small in my tests. Turndown also shows spikes in some traces so avoiding that by shifting the time for end point collection to 1s before the test is expected to finish (which makes this only compatible with --fixedtime) Also made device selection set env var instead of a global variable and passing via args it slighlty simplifies subprocess(adb) handling. Bug: b/291604008 Change-Id: I2109da0d75eba167eec939df88a34d9a9b7f330b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4799391 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov d41ac4da 2023-08-18T11:25:05 Cleanup: 'am instrument' readability and consistency Reconcile android_helper and restricted_trace_perf formatting of 'am instrument' command. The only real difference is that restricted_trace_perf uses 'shell=True' in subprocess which requires escaping spaces inside "" Bug: b/292249127 Change-Id: I002e49ae5b2913db46b92a7b643bc12d21abce1e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794430 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 84576a5b 2023-08-18T12:08:04 Trace perf: log script args in the spreadsheet Excludes the --output-tag flag Example: ... Source: raw_data.android.20230818.csv Args: -f *blade_and_soul_revolution --fixedtime 1 --power --loop-count 2 --sleep 1 Bug: b/292249127 Change-Id: Ic40666921fe49845032d47f32ecda9609ba7b044 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794431 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 9e2d4c0b 2023-08-18T10:25:48 Trace perf: add test crash handling When missing time and no '[ PASSED ]' tag in stdout, assume test crashed. Example stdout: trace wall_time gpu_time ... Starting run 1 with native at 2023-08-18 10:23:17 native_blade_and_soul_revolution crashed 0 ... raw_data: trace,wall_time(ms),gpu_time(ms),... native_blade_and_soul_revolution,crashed,0,... summary: 1,blade_and_soul_revolution,-1.000,-0.00%,-1.000,... Set cpu_time to 0 on a crash for consistency with other metrics. Bug: b/292249127 Change-Id: I9533c0ee7aa9a3b45f360ad1618984eb620d657f Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794428 Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 864de574 2023-08-18T09:49:30 Trace perf: subprocess.wait() -> subprocess.communicate() subprocess.wait() deadlocks when enough output is produced by the command to fill the stdout/stderr buffers. https://docs.python.org/3/library/subprocess.html#subprocess.Popen.wait recommends .communicate() instead. Replaced result.process.stdout with result.stdout which is a string rather than a stream. Bug: b/292249127 Change-Id: I172ac058ebc6aafda82edab7c45787252d612013 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4794288 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 0518a3ff 2023-07-14T14:53:39 Android: Simplify power metrics collection Also check for missing values and dupes Bug: b/291604008 Change-Id: I909ca2bf53d3aa0bf5ba66f7168e9925cfd7da3c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4685323 Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov c5b7fc36 2023-07-14T15:39:25 Ensure settings get cleaned up on exceptions Before this change, Ctrl-C or another exception leaves settings behind Bug: b/284462263 Change-Id: I5694cbb2ca7d43a4173099d126e6695e07ec9d2a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4685238 Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov 5997f1d7 2023-07-07T16:01:36 Fix little_cpu_power collection. Currently always getting 0, significantly undercounting cpu power at least in some cases (e.g. I saw 1700 vs 4300 in fishdom) Bug: b/284462263 Change-Id: Idd525f25cfc419a4a9d23a3fc99e938e99e1e715 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4672592 Auto-Submit: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Commit-Queue: Roman Lavrov <romanl@google.com>
Amirali Abdolrashidi 7169dc5f 2023-06-23T12:02:19 Fix vsync and offscreen for restricted_trace_perf * Updated the command used to run the trace so it would use the mode input, which includes --vsync and --offscreen. Bug: angleproject:8234 Change-Id: Ia761e369993183dcdfb66383f3006cf660044add Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4641272 Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Cody Northrop c7905f0a 2023-04-25T19:55:06 Scripts: Update setup for restricted_trace_perf Bug: b/276474703 Change-Id: I99a6ef212f6584ecace786da2587a8d2ae34eaa0 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4477658 Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Cody Northrop 249b03ac 2023-03-24T15:11:10 restricted_trace_perf: Delete settings when using default Follow up to the addition of `--renderer default`, actively delete the settings if default is chosen. Otherwise the script will just use whatever settings you already have. Test: restricted_trace_perf.py Bug: b/269645211 Change-Id: I83be7e3f7fa2f2a2bc9f9d243820b49a3cdbed82 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368874 Commit-Queue: Cody Northrop <cnorthrop@google.com> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Cody Northrop ec9595f1 2023-03-21T10:02:00 restricted_trace_perf: Run against default driver On newer Android versions where ANGLE can be the default driver, selecting "native" as the driver will always seek out the system driver instead of the default driver. To allow the platform to select the GLES driver, add a "default" mode that does not use any Android settings for driver selection. To use, pass `--renderer default` Test: restricted_trace_perf.py Bug: b/269645211 Change-Id: Ie9bf64eaa823d9d54301472c1d4e48bf2f5482cd Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4358331 Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com> Auto-Submit: Cody Northrop <cnorthrop@google.com> Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
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>