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

Issue 700996 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug-Regression



Sign in to add a comment

12.2%-37.1% regression in blink_perf.paint at 455610:455716

Project Member Reported by hjd@chromium.org, Mar 13 2017

Issue description

See the link to graphs below.
 
Project Member

Comment 3 by 42576172...@developer.gserviceaccount.com, Mar 13 2017

Cc: pdr@chromium.org
Owner: pdr@chromium.org

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

Hi pdr@chromium.org, the bisect results pointed to your CL, please take a look at the
results.


=== BISECT JOB RESULTS ===
Perf regression found with culprit

Suspected Commit
  Author : pdr
  Commit : ce1b788de6382f8c3725efe1fb14e9d4c639b5ab
  Date   : Thu Mar 09 04:36:32 2017
  Subject: Heap allocate PrePaintTreeWalk context object

Bisect Details
  Configuration: mac_10_11_perf_bisect
  Benchmark    : blink_perf.paint
  Metric       : complex-content-slow-scroll/complex-content-slow-scroll
  Change       : 56.41% | 152.72325 -> 238.879166667

Revision             Result                  N
chromium@455646      152.723 +- 5.14132      6      good
chromium@455661      147.37 +- 4.6609        6      good
chromium@455665      146.507 +- 6.32714      6      good
chromium@455667      148.366 +- 2.98127      6      good
chromium@455668      217.438 +- 17.5952      6      bad       <--
chromium@455669      222.251 +- 18.0772      6      bad
chromium@455676      231.552 +- 27.143       6      bad
chromium@455706      238.879 +- 16.6375      6      bad

To Run This Test
  src/tools/perf/run_benchmark -v --browser=release --output-format=chartjson --upload-results --pageset-repeat=1 --also-run-disabled-tests blink_perf.paint

Debug Info
  https://chromeperf.appspot.com/buildbucket_job_status/8985215546215491088

Is this bisect wrong?
  https://chromeperf.appspot.com/bad_bisect?try_job_id=5283510501244928


| 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 Speed>Bisection.  Thank you!

Comment 4 by hjd@chromium.org, Mar 14 2017

Status: Assigned (was: Untriaged)

Comment 5 by pdr@chromium.org, Mar 14 2017

Cc: wangxianzhu@chromium.org
Components: Blink>Paint
This is real and confirms Xianzhu's suspicions about the perf impact. I think we will need to take another approach.
USING_FAST_MALLOC(PrePaintTreeWalkContext)?
Or Vector<PaintPropertyTreeBuilderContext> m_treeBuilderContexts in PrePaintTreeWalk?
Also, looks like PrePaintTreeWalkContext stores a heap-allocated PaintPropertyTreeBuilderContext.  If its lifetime is tied to PrePaintTreeWalkContext, can we store it inline instead (and trade the PaintPropertyTreeBuilderContext allocation for the PrePaintTreeWalkContext allocation)?

Comment 9 by pdr@chromium.org, Mar 14 2017

We can't use a vector because vector re-allocates as it grows, and our context keeps raw pointers to the parent context. Or, we have to change that parent pointer behavior. I actually like changing that because it's confusing. Will investigate one or all of these approaches.
Re #8 and #9:

Now we allocate PaintPropertyTreeBuilderContext instead of PrePaintTreeWalkContext in heap after https://codereview.chromium.org/2741833005.

As PaintPropertyTreeBuilderContext doesn't have pointer to parent context, can we use vector for it (after trying USING_FAST_MALLOC)?
How often is the context updated?  Do we expect all/most nodes to mutate it?

If not, another idea would be to make the allocation lazy (CoW context).
Yes, I think we can share one PaintPropertyTreeWalkContext among multiple PrePaintTreeWalks. We may need to separate out current.paintOffset which is updated much more frequently than other fields.

Comment 14 by pdr@chromium.org, Mar 20 2017

Just landed https://codereview.chromium.org/2744243010 which should improve these graphs. I'm going to hold off on marking as fixed though.

Comment 15 by pdr@chromium.org, Apr 10 2017

Status: Fixed (was: Assigned)
Teh graphs are happy

Sign in to add a comment