New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 614765 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 1
Type: Bug



Sign in to add a comment

Test failure oilpan_gc_times.key_silk_cases on android

Project Member Reported by robert...@chromium.org, May 25 2016

Issue description

Build is broken:
oilpan_gc_times.key_silk_cases

Revision range:
chromium 395777 : 395812

Failing builders:
Android Nexus5X WebView Perf (2): https://build.chromium.org/p/chromium.perf/builders/Android%20Nexus5X%20WebView%20Perf%20(2)


 
Labels: Performance-BotHealth
Cc: esprehn@chromium.org ajuma@chromium.org vmi...@chromium.org
This is also affecting thread_times.key_silk_cases and smoothness.key_silk_cases

According to this bisect job,
https://build.chromium.org/p/tryserver.chromium.perf/builders/android_s5_perf_bisect/builds/672

The culprit seems to be this patch:
Add an early abort for the CSSParserFastPaths transform path.

For transforms that miss the fast path like
"transform(1px, 1px) rotate(1deg)" we end up spending a lot of time
building the transform list and doing string to double conversions for
the function calls we do understand that were listed before the ones we
didn't understand. This work ends up wasted and we have to redo it all
inside the real CSSParser later.

This patch introduces a scan over the string that tries to reject all
transform things we don't understand in advance.

This is not the best, since ideally we'd just remove the fast path and
make the real parser just as fast, but in the meantime this at least
avoids doing lots of wasted work.

This patch makes the script in Animometer > Leaves 8% faster.

The change is covered by the tests introduced in:
https://codereview.chromium.org/2007823002

BUG=606211

Review-Url: https://codereview.chromium.org/1996343003
Cr-Commit-Position: refs/heads/master@{#395797}

CCing the author of the patch and the owners of the other affected tests.
The logs point to a timeout when running:  http://jsbin.com/UVIgUTa/38/quiet

This is affecting Linux and all Android platforms.
Owner: robert...@chromium.org
Status: Started (was: Available)
Landed the revert: https://codereview.chromium.org/2009723003/
Bots are starting to recover.
Project Member

Comment 7 by 42576172...@developer.gserviceaccount.com, May 26 2016

Owner: esprehn@chromium.org

=== Auto-CCing suspected CL author esprehn@chromium.org ===

Hi esprehn@chromium.org, the bisect results pointed to your CL below as possibly
causing a regression. Please have a look at this info and see whether
your CL be related.


===== BISECT JOB RESULTS =====
Status: completed


===== SUSPECTED CL(s) =====
Subject : Add an early abort for the CSSParserFastPaths transform path.
Author  : esprehn
Commit description:
  
For transforms that miss the fast path like
"transform(1px, 1px) rotate(1deg)" we end up spending a lot of time
building the transform list and doing string to double conversions for
the function calls we do understand that were listed before the ones we
didn't understand. This work ends up wasted and we have to redo it all
inside the real CSSParser later.

This patch introduces a scan over the string that tries to reject all
transform things we don't understand in advance.

This is not the best, since ideally we'd just remove the fast path and
make the real parser just as fast, but in the meantime this at least
avoids doing lots of wasted work.

This patch makes the script in Animometer > Leaves 8% faster.

The change is covered by the tests introduced in:
https://codereview.chromium.org/2007823002

BUG=606211

Review-Url: https://codereview.chromium.org/1996343003
Cr-Commit-Position: refs/heads/master@{#395797}
Commit  : ad21c7423bc912e4c5287204d7c1eb57b994099a
Date    : Wed May 25 04:14:57 2016


===== TESTED REVISIONS =====
Revision         Exit Code  Std Dev  N   Good?
chromium@395792  0          N/A      20  good
chromium@395795  0          N/A      20  good
chromium@395796  0          N/A      20  good
chromium@395797  1          N/A      20  bad    <--
chromium@395802  1          N/A      20  bad
chromium@395812  1          N/A      20  bad

Bisect job ran on: android_nexus6_perf_bisect
Bug ID: 614765

Test Command: src/tools/perf/run_benchmark -v --browser=android-chromium --output-format=chartjson --upload-results --also-run-disabled-tests oilpan_gc_times.key_silk_cases
Test Metric: oilpan_gc/oilpan_gc
Relative Change: Zero to non-zero
Score: 99.9

Buildbot stdio: http://build.chromium.org/p/tryserver.chromium.perf/builders/android_nexus6_perf_bisect/builds/2199
Job details: https://chromeperf.appspot.com/buildbucket_job_status/9011668061118421232


Not what you expected? We'll investigate and get back to you!
  https://chromeperf.appspot.com/bad_bisect?try_job_id=5905885738565632

| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq
|  X  | for more information addressing perf regression bugs. For feedback,
| / \ | file a bug with component Tests>AutoBisect.  Thank you!
Status: Fixed (was: Started)
Silly me doing UINT_MAX + 1, woops.

Fixed by https://codereview.chromium.org/1996343003
btw for context, this also exposes that the perf test is assigning transforms that have  a missing closing paren (that's what caught the bug in my patch):

  divs[d].matrix = new WebKitCSSMatrix(
      "matrix3d(1,0,0,0," + 
      "0,1,0,0," + 
      "0,0,1,0," +
      "0,0,0,1"); <== NOTE THE MISSING ) here

which meant that prior to my patch we were wasting time in the test on the CSSParserFastPaths only to discard it and then parse again with the real CSS parser since the fast path has pretty strict parsing rules, and while leaving off the closing paren is technically okay the fast path doesn't handle it because it assumes you're writing CSS more strictly. We could probably fix the fast path to understand hitting the end of the string if the correct number of arguments has been found is still valid too.
Does anyone know how we can update the silk page set to add the missing paren? :)
Cc: nednguyen@chromium.org eakuefner@chromium.org
Looks like anyone can edit the jsbin page here: http://jsbin.com/UVIgUTa/edit?html,css,js,output

And then re-record the pageset. Ethan, Ned, are these the most up-to-date docs on recording? https://www.chromium.org/developers/telemetry/record_a_page_set
Yep. I think those instructions worked for me last time I did a re-record.
Components: Speed>Benchmarks>Waterfall
Labels: -Performance-Waterfall

Sign in to add a comment