Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Issue 968073003: [content]: Add support for long idle times in the Blink Scheduler. (Closed)

Created:
5 years, 9 months ago by rmcilroy
Modified:
5 years, 9 months ago
Reviewers:
picksi, Sami
CC:
chromium-reviews, mkwst+moarreviews-renderer_chromium.org, darin-cc_chromium.org, jam, scheduler-bugs_chromium.org, mlamouri+watch-content_chromium.org, jochen (gone - plz use gerrit), Hannes Payer (out of office), kouhei (in TOK), haraken
Base URL:
https://chromium.googlesource.com/chromium/src.git@long_idle_4
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

[content]: Add support for long idle times in the Blink Scheduler. Adds support for long idle times in the Blink Scheduler. A long idle time is initiated if there are no frames being drawn and we are not in TOUCHSTART policy. Each long idle period will be a maximum of 50 milliseconds or the time to the next pending delayed task (whichever is sooner). Long idle periods will continually be scheduled until a call to EndIdlePeriod is made. If there are no pending tasks in the idle queue then the callback used to initate the next long idle task will be posted on the control_task_after_wakeup_runner_ task runner, thus ensuring that it won't cause the scheduler to wake up until another task could have posted more idle work. Currently, the long idle tasks are not enabled due to crbug.com/467655 - once this is fixed they will be enabled. Long idle task design doc: https://docs.google.com/a/chromium.org/document/d/1yBlUdYW8VTIfB-DqhvQqUeP0kf-Ap1W4cao2yQq58Do/edit BUG=455713, 467655 Committed: https://crrev.com/143bfac301e4306a3c5043f44d92381811030a91 Cr-Commit-Position: refs/heads/master@{#320785}

Patch Set 1 #

Patch Set 2 : Minor tweaks #

Total comments: 46

Patch Set 3 : Review comments #

Total comments: 8

Patch Set 4 : Review comments #

Patch Set 5 : fix missing comment #

Total comments: 2

Patch Set 6 : Add parameter to EndIdlePeriod. #

Total comments: 3

Patch Set 7 : Include IdlePeriodState changes and ENDING_IDLE_PERIOD state. #

Total comments: 8

Patch Set 8 : Final nits. #

Patch Set 9 : Rebased #

Patch Set 10 : Disable idle periods to allow landing while http://crbug.com/467655 is fixed #

Patch Set 11 : Enable for testing #

Unified diffs Side-by-side diffs Delta from patch set Stats (+509 lines, -41 lines) Patch
M content/renderer/scheduler/renderer_scheduler_impl.h View 1 2 3 4 5 6 7 8 9 10 7 chunks +47 lines, -1 line 0 comments Download
M content/renderer/scheduler/renderer_scheduler_impl.cc View 1 2 3 4 5 6 7 8 9 10 9 chunks +208 lines, -35 lines 0 comments Download
M content/renderer/scheduler/renderer_scheduler_impl_unittest.cc View 1 2 3 4 5 6 7 8 9 10 5 chunks +161 lines, -1 line 0 comments Download
M content/renderer/scheduler/task_queue_manager.h View 1 2 3 4 5 6 7 8 9 1 chunk +4 lines, -0 lines 0 comments Download
M content/renderer/scheduler/task_queue_manager.cc View 1 2 3 4 5 6 7 8 9 5 chunks +41 lines, -4 lines 0 comments Download
M content/renderer/scheduler/task_queue_manager_unittest.cc View 1 2 3 4 5 6 7 8 9 1 chunk +48 lines, -0 lines 0 comments Download

Messages

Total messages: 43 (15 generated)
rmcilroy
Sami: PTAL, thanks.
5 years, 9 months ago (2015-03-02 16:35:01 UTC) #2
Sami
Overall looks like the way to do things. Had a few comments about the organization. ...
5 years, 9 months ago (2015-03-03 16:55:36 UTC) #3
picksi
Some nit picks and bike-shedding! https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode346 content/renderer/scheduler/renderer_scheduler_impl.cc:346: if (last_input_process_time_on_main_.is_null() && In ...
5 years, 9 months ago (2015-03-04 10:43:23 UTC) #5
rmcilroy
https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode340 content/renderer/scheduler/renderer_scheduler_impl.cc:340: DCHECK(main_thread_checker_.CalledOnValidThread()); On 2015/03/03 16:55:35, Sami wrote: > DCHECK_NE(input_stream_state_, InputStreamState::INACTIVE); ...
5 years, 9 months ago (2015-03-04 14:23:12 UTC) #6
picksi
Thanks, looks good. https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/task_queue_manager.cc File content/renderer/scheduler/task_queue_manager.cc (right): https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/task_queue_manager.cc#newcode415 content/renderer/scheduler/task_queue_manager.cc:415: if (next_pending_delayed_task == I suppose the ...
5 years, 9 months ago (2015-03-04 16:29:05 UTC) #7
Sami
https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode355 content/renderer/scheduler/renderer_scheduler_impl.cc:355: last_input_process_time_on_main_) + On 2015/03/04 14:23:11, rmcilroy wrote: > On ...
5 years, 9 months ago (2015-03-04 18:26:41 UTC) #8
rmcilroy
https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/20001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode412 content/renderer/scheduler/renderer_scheduler_impl.cc:412: long_idle_period_duration = std::min( On 2015/03/04 18:26:40, Sami wrote: > ...
5 years, 9 months ago (2015-03-05 11:48:53 UTC) #10
Sami
https://codereview.chromium.org/968073003/diff/40001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/40001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode476 content/renderer/scheduler/renderer_scheduler_impl.cc:476: } On 2015/03/04 18:26:40, Sami wrote: > Forgot to ...
5 years, 9 months ago (2015-03-05 12:01:51 UTC) #11
rmcilroy
https://codereview.chromium.org/968073003/diff/40001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/40001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode476 content/renderer/scheduler/renderer_scheduler_impl.cc:476: } On 2015/03/05 12:01:51, Sami wrote: > On 2015/03/04 ...
5 years, 9 months ago (2015-03-05 12:29:42 UTC) #12
Sami
https://codereview.chromium.org/968073003/diff/100001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/100001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode478 content/renderer/scheduler/renderer_scheduler_impl.cc:478: EndIdlePeriod(); Wait, isn't EndIdlePeriod now always going to add ...
5 years, 9 months ago (2015-03-05 12:38:25 UTC) #13
rmcilroy
https://codereview.chromium.org/968073003/diff/100001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/100001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode478 content/renderer/scheduler/renderer_scheduler_impl.cc:478: EndIdlePeriod(); On 2015/03/05 12:38:25, Sami wrote: > Wait, isn't ...
5 years, 9 months ago (2015-03-05 13:44:22 UTC) #14
Sami
Thanks, almost there :) https://codereview.chromium.org/968073003/diff/120001/content/renderer/scheduler/renderer_scheduler_impl.h File content/renderer/scheduler/renderer_scheduler_impl.h (right): https://codereview.chromium.org/968073003/diff/120001/content/renderer/scheduler/renderer_scheduler_impl.h#newcode167 content/renderer/scheduler/renderer_scheduler_impl.h:167: void EndIdlePeriod(bool inhibit_trace_events = false); ...
5 years, 9 months ago (2015-03-05 14:01:04 UTC) #15
picksi
https://codereview.chromium.org/968073003/diff/120001/content/renderer/scheduler/renderer_scheduler_impl.h File content/renderer/scheduler/renderer_scheduler_impl.h (right): https://codereview.chromium.org/968073003/diff/120001/content/renderer/scheduler/renderer_scheduler_impl.h#newcode167 content/renderer/scheduler/renderer_scheduler_impl.h:167: void EndIdlePeriod(bool inhibit_trace_events = false); :)
5 years, 9 months ago (2015-03-05 14:11:33 UTC) #16
rmcilroy
https://codereview.chromium.org/968073003/diff/120001/content/renderer/scheduler/renderer_scheduler_impl.h File content/renderer/scheduler/renderer_scheduler_impl.h (right): https://codereview.chromium.org/968073003/diff/120001/content/renderer/scheduler/renderer_scheduler_impl.h#newcode167 content/renderer/scheduler/renderer_scheduler_impl.h:167: void EndIdlePeriod(bool inhibit_trace_events = false); On 2015/03/05 14:11:32, picksi ...
5 years, 9 months ago (2015-03-05 16:07:50 UTC) #17
Sami
lgtm, thanks Ross! https://codereview.chromium.org/968073003/diff/140001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/140001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode378 content/renderer/scheduler/renderer_scheduler_impl.cc:378: DCHECK(input_stream_state_ != InputStreamState::INACTIVE); nit: could remove ...
5 years, 9 months ago (2015-03-05 16:22:32 UTC) #18
rmcilroy
https://codereview.chromium.org/968073003/diff/140001/content/renderer/scheduler/renderer_scheduler_impl.cc File content/renderer/scheduler/renderer_scheduler_impl.cc (right): https://codereview.chromium.org/968073003/diff/140001/content/renderer/scheduler/renderer_scheduler_impl.cc#newcode378 content/renderer/scheduler/renderer_scheduler_impl.cc:378: DCHECK(input_stream_state_ != InputStreamState::INACTIVE); On 2015/03/05 16:22:32, Sami wrote: > ...
5 years, 9 months ago (2015-03-05 16:42:39 UTC) #19
rmcilroy
+jochen,hpayer,kouhei,haraken FYI - when this change lands the scheduler will schedule long idle time task.
5 years, 9 months ago (2015-03-05 16:46:02 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/968073003/160001
5 years, 9 months ago (2015-03-05 16:46:59 UTC) #23
commit-bot: I haz the power
Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator_ninja/builds/2475) ios_rel_device_ninja on tryserver.chromium.mac (JOB_FAILED, ...
5 years, 9 months ago (2015-03-05 16:49:43 UTC) #25
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/968073003/170001
5 years, 9 months ago (2015-03-05 17:02:47 UTC) #28
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_chromeos_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_chromeos_rel_ng/builds/32873)
5 years, 9 months ago (2015-03-05 20:42:59 UTC) #30
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/968073003/170001
5 years, 9 months ago (2015-03-11 11:28:16 UTC) #32
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/41989)
5 years, 9 months ago (2015-03-11 14:44:01 UTC) #34
rmcilroy
On 2015/03/11 14:44:01, I haz the power (commit-bot) wrote: > Try jobs failed on following ...
5 years, 9 months ago (2015-03-16 19:18:33 UTC) #35
Sami
lgtm, thanks for enabling the tests.
5 years, 9 months ago (2015-03-16 19:37:45 UTC) #39
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/968073003/200001
5 years, 9 months ago (2015-03-16 19:38:14 UTC) #41
commit-bot: I haz the power
Committed patchset #11 (id:200001)
5 years, 9 months ago (2015-03-16 20:33:49 UTC) #42
commit-bot: I haz the power
5 years, 9 months ago (2015-03-16 20:34:53 UTC) #43
Message was sent while issue was closed.
Patchset 11 (id:??) landed as
https://crrev.com/143bfac301e4306a3c5043f44d92381811030a91
Cr-Commit-Position: refs/heads/master@{#320785}

Powered by Google App Engine
This is Rietveld 408576698