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