src/tests/run_perf_tests.py


Log

Author Commit Date CI Message
Roman Lavrov b71c6427 2022-05-31T16:23:51 Add a wrapper script to run traces using android_helper. Also add missing `appops set MANAGE_EXTERNAL_STORAGE` that appears to be necessary on newer builds (catapult does it starting from Android 11). Add a hash check to skip transferring .gz files that are already there. Bug: angleproject:6854 Change-Id: Ib612d1235fe1274b8fea47718af8389e8810d34e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679486 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Auto-Submit: Roman Lavrov <romanl@google.com>
Roman Lavrov b03f2789 2022-05-31T20:31:23 Revert "Use a temporary timeout multipler for trace tests." This reverts commit f810e998993290f049bbdad4fae975e4867100ad. Reason for revert: Uploads are now sharded so this shouldn't be needed. Original change's description: > Use a temporary timeout multipler for trace tests. > > The trace tests upload is frequently timing out on our test infra > because of the size of the test suite. Until we can find a better > solution we can increase the timeout non-invasively using an > environment variable. > > Bug: angleproject:6854 > Change-Id: Ifbe43c4d9dc8928cf35df8a26b844f884c90eb9d > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427560 > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> > Commit-Queue: Jamie Madill <jmadill@chromium.org> Bug: angleproject:6854 Change-Id: Iaad7b63073ed900acdc575fbac927a8463b0c530 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3679487 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov c9794d6c 2022-04-27T14:20:47 Run a smoke test in each shard and crash on timeouts. The smoke test (words_with_friends_2) typically takes only a few seconds to run. Run it first to check that everything is working as intended. As we know it's a short test, we can set a small timeout (60s) and fail early in case something goes wrong. This will speed up tests failures when something is completely broken. I also changed the main shard run to crash when timeout is detected instead of just dumping debug info as if the tests didn't finish in 10 minutes they're also unlikely to finish in the 20 minutes after which swarming times out the shard. Bug: angleproject:7242 Change-Id: Ia99ca4b2e1676d09b9ff7d67ab116aba94f66512 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3611446 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Roman Lavrov cdcf1715 2022-04-26T14:48:10 Add missing result_skip and result_fail. Missing result_skip results in tests missing from json.output in perf CI builders. Not sure if the missing result_fail actually happens. Bug: angleproject:6854 Change-Id: I0d70a93be0d595c45e23558345481e749ba128bc Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3606921 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov ebfb9b9f 2022-04-26T10:37:52 Configure logging in perf and gold tests to include time. Currently no timestamp is logged: [I2022-04-25T18:45:14.761163Z 548 0 cmd_stream.go:336] {cmd} INFO:root:adb --version ... Before switching to android_helper relative timestamps in seconds were printed, set up by catapult. Timestamps proposed in this CL are more consistent with outer logging but keep prefix short. Example: [I2022-04-25T18:45:14.761163Z 548 0 cmd_stream.go:336] {cmd} I18:45:14.999999Z adb --version ... Bug: angleproject:6854 Change-Id: I8ef7c9ae44eb5dba564a41456ce9417e3fe0f06c Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3606913 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov d1788614 2022-04-22T15:52:16 Use adb instead of catapult to run perf tests on Android. Add support for replacing flags: --isolated-script-test-output --isolated-script-test-perf-output --render-test-output-dir Always set --isolated-script-test-output to check for test failures using num_failures_by_type, interrupted, is_unexpected fields. Bug: angleproject:6854 Change-Id: Ia701f4d4d5d1adc9a24c057bb5c58fd5457cbd65 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3602834 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Roman Lavrov 4ac3ec13 2022-04-22T12:15:51 Switch py_utils import to pathlib. os.stat path before adding just to catch future copy-paste mistakes. Bug: angleproject:6854 Change-Id: If58c46f99aca93e6aeda90a987ceebbbb1b66955 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600911 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Roman Lavrov <romanl@google.com>
Jamie Madill 3739a195 2022-03-09T13:56:36 perf tests: Record perf counter metrics. This adds a new command line argument that will allow the user to specify perf counters to record into the test output. Bug: angleproject:4918 Change-Id: Ia7432ff96eadf13ef681f67d2d503d00fd83e06e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3516970 Reviewed-by: Lingfeng Yang <lfy@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Reviewed-by: Yuxin Hu <yuxinhu@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 1cfbe863 2022-03-09T13:35:44 perf tests: Report multiple time metrics. We can now report cpu/wall/gpu time instead of just a single timing metric. This is in preparation for reporting other types of metric including counters. Also includes some other minor script improvements. Bug: angleproject:4918 Change-Id: I52a3241893c56a1bfe982990ebac0fa168dbac51 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3516969 Reviewed-by: Yuxin Hu <yuxinhu@google.com> Reviewed-by: Charlie Lao <cclao@google.com> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill f810e998 2022-01-31T11:39:37 Use a temporary timeout multipler for trace tests. The trace tests upload is frequently timing out on our test infra because of the size of the test suite. Until we can find a better solution we can increase the timeout non-invasively using an environment variable. Bug: angleproject:6854 Change-Id: Ifbe43c4d9dc8928cf35df8a26b844f884c90eb9d Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3427560 Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Yuly Novikov 14af7a8d 2021-12-22T15:17:26 Log subprocess output in run_perf_tests.py To aid with debugging a flaky hang listing tests on Android. Bug: chromium:1279512 Change-Id: Icbdf753e1e7c21ab766fdd5767ca05d07b66485b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3353760 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill e0b4cf6c 2021-11-26T10:23:24 Fix Python3 usage with perf tests/gold tests. Bug: angleproject:6733 Change-Id: I9d1baf78ed182db77c6a6d8e896737413ca417f3 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3304012 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 8c634492 2021-11-17T11:06:23 Updates to perf test running script. - Fixes logging (needed reload) - Improves logging messages (less spam) - Reduces time in test calibration & sampling - Record failures on test errors more robustly - Redesign the result recording class Bug: angleproject:6090 Change-Id: I53fd86e9e009bd52ec98507334c69b05e711d83e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3288206 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Tim Van Patten <timvp@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com>
Jamie Madill c3e0eafa 2021-09-22T13:35:04 Revert "Perf Tests: Split samples into sub-tests on desktop." This reverts commit 90c981dafc06d6bc0696749dface1337e37784d2. Reason for revert: Causing timeouts on perf bots. Original change's description: > Perf Tests: Split samples into sub-tests on desktop. > > This adds an option to the perf test runner to split each sample of > each test into a sub-test. The sub-tests then are split among the > shards like ordinary tests, and distributed across machines. The > intent is that running on different machines will reduce inter-build > variance because of differences between test machines. > > This sampling change is only added to desktop (Linux/Win) because > Android device variance seems to be lower. > > Bug: angleproject:6090 > Change-Id: I4046a012727baa8a0f2595de2349cc34257691f9 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152752 > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Cody Northrop <cnorthrop@google.com> > Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Bug: angleproject:6090 Change-Id: I92bffb98999f35274ec31a3b7567d87453feff94 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3174274 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill 90c981da 2021-09-10T11:04:19 Perf Tests: Split samples into sub-tests on desktop. This adds an option to the perf test runner to split each sample of each test into a sub-test. The sub-tests then are split among the shards like ordinary tests, and distributed across machines. The intent is that running on different machines will reduce inter-build variance because of differences between test machines. This sampling change is only added to desktop (Linux/Win) because Android device variance seems to be lower. Bug: angleproject:6090 Change-Id: I4046a012727baa8a0f2595de2349cc34257691f9 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3152752 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Jamie Madill 1b2febb9 2021-08-23T12:39:16 Trace Tests: Refactor calibration logic. Instead of calling glFinish every step we now run a few warmup loops to try and figure out the right step interval. On each run we refine the step interval until we reach a number that completes in the specific time after a single glFinish call. This method will use the specified test time much more consistenty. Also a couple other improvements. Will use more test time on the bots because previously they were using a calibration/warmup time of 1 second per run loop, and this bumps it up to 3 per run loop. Long explanation below. What we did before: step() glFinish() step() glFinish() .. repeat for "gCalibrationTime" seconds then take the number of steps, the actual time ran, and compute an estimate for "mStepsToRun". When we run for real, we go: step() step() step() .. repeat for "mStepsToRun" steps. glFinish() this has an obvious performance difference, because after each step() (one frame in a trace) you had a complete stall. The new code first does the above to compute a tentative mStepsToRun, then uses the results of the second run to compute a much more accurate mStepsToRun by using the "actual" time it took to run the estimate. Bug: angleproject:6090 Change-Id: I0ff19873580e13f2af5a145a21f5b1c59fb15795 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3114606 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>
Jamie Madill 130a8b63 2021-08-16T17:09:10 Perf Runner: Properly merge histograms. The prior method was emitting 5 histograms per test. The new script method merges the 5 histogram samples together and recomputes the running statistics. Should improve reporting on the dashboard. Bug: angleproject:6090 Change-Id: I58a5e020f3a3257a8545df2785bc3eaa811ee38e Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3096550 Reviewed-by: Yuly Novikov <ynovikov@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
Jamie Madill d25c9d7f 2021-07-07T12:15:12 Add perf tests runner script. This script will be responsible for running the perf tests multiple times to try and stabilize measurements. We'll use it on the bots instead of just running the perf tests directly. Because the script invokes the binary multiple times, this slows down execution. Most significantly on Android, where we now need to use 20 shards, up from 6. Also marks one test as flaky on OpenGL. Bug: angleproject:6090 Change-Id: I5280035cb0bdb290a68dc6961a384eaf4b40dd4b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3011422 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Tim Van Patten <timvp@google.com>