Issue metadata
Sign in to add a comment
|
21.4%-25.3% regression in thread_times.key_silk_cases at 537902:537961 |
||||||||||||||||||||||
Issue descriptionSee the link to graphs below.
,
Feb 22 2018
📍 Pinpoint job started. https://pinpoint-dot-chromeperf.appspot.com/job/14fb8d4f840000
,
Feb 23 2018
😿 Pinpoint job stopped with an error. https://chromeperf.appspot.com/job/14fb8d4f840000
,
Mar 16 2018
📍 Pinpoint job started. https://pinpoint-dot-chromeperf.appspot.com/job/16bdfbd1440000
,
Mar 16 2018
jamwalla, can you take a look? The bisect didn't report back to the bug but if you look at https://pinpoint-dot-chromeperf.appspot.com/job/14fb8d4f840000 you can see a pretty clear regression at r537922, "WebView: enable cc::switches::kCheckDamageEarly". Re-running bisect to double-check.
,
Mar 21 2018
I can reproduce this - the test runs a CSS animation - when the checkDamageEarly flag is on, there are about half as many BeginFrames, but they're longer. I think frame times are longer with the flag on because we call PrepareTiles twice per frame - once as a scheduled action and once during CommitComplete. +bo, is this related to the optimization you mentioned in crbug/687695#c36?
,
Mar 21 2018
you got traces with more events? The only thing I got from the traces on the bot is that previously, renderer compositor wasn't actually producing frames. Does sound a lot like crbug/687695#c36, yeah. But I don't understand why things got worse
,
Mar 21 2018
Hmm... We should investigate this specific case more, but is there any way we can prevent perf regressions more proactively in the first place? alexclarke@ / danakj@, any thought?
,
Mar 21 2018
We'd discussed before only doing the PrepareTiles in WillBeginImplFrame if there's no main frame pending, when in low latency mode, to avoid doing it twice per frame if possible.
,
Mar 21 2018
this is as good as it's going to get, getting a bug filed with traces that tell you what regressed, which CL caused the regression, and instructions on how to run the test
,
Mar 21 2018
Here's the traces I got: locally, this regression is from 1.652 ms with the flag disabled to 2.103 ms with the flag enabled.
,
Mar 21 2018
Re #10 the chromium CQ is often pretty slow, plenty of time to run some perf tests?
,
Mar 21 2018
I'm sure the perf team can tell you costs associated with putting perf tests on cq. cq being slow is no excuse to make it slower. But this is the wrong place to have this discussion
,
Mar 21 2018
Your local "flag disabled" trace has the scheduler stuck in high latency mode all the time (BeginMainFrame running in parallel with raster, and commit blocking for a long time). But trace from bot shows it's consistently staying in low latency mode. So not very representative. What device were you using? Maybe the additional tracing is enough overhead to push it to high latency mode? Try a faster device maybe. Or maybe just bad luck. Anyway, I don't see LayerTreeHostImpl::DrawLayers skipping frames due to draw (when it's super short and doesn't have BenchmarkInstrumentation::ImplThreadRenderingStats underneath it). So I still don't understand what was happening in the trace before, or what could have changed that behavior.
,
Mar 21 2018
Err, not drawing is a red herring. I was comparing different stages of the test to each other. I think double prepare tiles is also a red herring from being in high latency mode in the local traces. jamwalla trying to confirm that now. Still no theory on why thread time on so many different threads all regressed..
,
Mar 21 2018
Ok, re #8, #10, #12, I think we should probably run perf trybots more comprehensively for an extensive optimization change like this. Perf Trybots: https://chromium.googlesource.com/chromium/src/+/master/docs/speed/perf_trybots.md System Health Benchmarks: https://docs.google.com/document/d/1BM_6lBrPzpMNMtcyi2NFKGIzmzIQ1oH3OlNG27kDGNU/edit?ts=57e92782#heading=h.fama47i7l06v Chrome Speed Metrics: Tracking https://docs.google.com/spreadsheets/d/1gY5hkKPp8RNVqmOw1d-bo-f9EXLqtq4wa3Z7Q8Ek9Tk/edit#gid=0 (There's mention of Thread Times here - not sure what exact benchmark runs this.) perezju@, is there any perf benchmarks we're missing above but still need to look out for? We previously ran https://bugs.chromium.org/p/chromium/issues/detail?id=687695#c41 .
,
Mar 21 2018
This was not an "extensive optimization change", and this is not a severe regression to block release. And jamwalla did due diligence of running perf trybots (https://chromium.googlesource.com/chromium/src/+/lkcr/docs/speed/perf_trybots.md) before landing. They didn't show anything afaik. And please a different bug/email thread for that discussion
,
Mar 22 2018
+vmiura benchmark owner of thread_times.key_silk_cases for input on what that benchmark is measuring and assess the impact of the regression filed.
,
Mar 22 2018
Another unverified theory is that the denominator went down. All of these are "per frame" metrics, so how are frames counted exactly? That CL got rid of a bunch of LayerTreeHostImpl::DrawLayers events. So if frames are counted by number of DrawLayers, then that would explain why so many seemingly unrelated thread times all regressed, and by roughly the same amount.
,
Mar 22 2018
Looking at https://cs.chromium.org/chromium/src/tools/perf/metrics/timeline.py I think this is a good theory, "per frame" is measured by counting LayerTreeHostImpl::DrawLayers. So we have fewer draws in the beginning of the test, and then the behavior is the same during the actual animation, but now calculating mean cpu time with a fewer number of frames. +vmiura does this sound right? In that case let's mark this WontFix.
,
Mar 22 2018
Yeah, this is not a regression at all then. This removed all the DrawLayers events that previously just early returned immediately due to no damage, but did not remove any other work. So only the artificial denominator moved.
,
Mar 29 2018
📍 Found significant differences after each of 3 commits. https://pinpoint-dot-chromeperf.appspot.com/job/16bdfbd1440000 Remove win-msvc-dbg from the CQ. by dpranke@chromium.org https://chromium.googlesource.com/chromium/src/+/a00fb2774344bce8fc913e4028a8053baa795739 Move WebKit/common/service_worker mojom files to WebKit/public/mojom by kinuko@chromium.org https://chromium.googlesource.com/chromium/src/+/589233627aed664191bab4c63dabd2afdee31199 WebView: enable cc::switches::kCheckDamageEarly by jamwalla@chromium.org https://chromium.googlesource.com/chromium/src/+/05381aa3a9570439a16774f120bc3c0d20c9de81 Understanding performance regressions: http://g.co/ChromePerformanceRegressions
,
Mar 29 2018
The above is about thread_times.key_silk_cases.thread_other_cpu_time_per_frame, another "per frame" metric. Not a regression, see #19-21. |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by 42576172...@developer.gserviceaccount.com
, Feb 22 2018