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

Issue 2116163002: Add Lazy Creation and Thread Detachment Support in the Scheduler Worker Pool (Closed)

Created:
4 years, 5 months ago by robliao
Modified:
4 years, 5 months ago
Reviewers:
gab, fdoray
CC:
chromium-reviews, gab+watch_chromium.org, robliao+watch_chromium.org, fdoray+watch_chromium.org, danakj
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Add Lazy Creation and Thread Detachment Support in the Scheduler Worker Pool BUG=553459 Committed: https://crrev.com/8a4029212fd36fdd8befc9479d6e2966bd27b95e Cr-Commit-Position: refs/heads/master@{#407205}

Patch Set 1 #

Total comments: 41

Patch Set 2 : CR Feedback #

Patch Set 3 : CR Feedback fdoray@ #

Total comments: 9

Patch Set 4 : Test Controlled Detachment and Some Cleanup #

Total comments: 39

Patch Set 5 : CR Feedback gab@ #

Patch Set 6 : Rebase on top of SchedulerWorkerPoolParams #

Patch Set 7 : CR Feedback Continuation #

Total comments: 29

Patch Set 8 : CR Feedback #

Patch Set 9 : Rebase #

Patch Set 10 : CR Feedback #

Total comments: 3

Patch Set 11 : TimeTicks #

Patch Set 12 : Fenced Load #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+442 lines, -49 lines) Patch
M base/task_scheduler/scheduler_service_thread_unittest.cc View 1 2 3 4 5 1 chunk +2 lines, -1 line 0 comments Download
M base/task_scheduler/scheduler_worker_pool_impl.h View 1 2 3 4 5 6 7 6 chunks +30 lines, -1 line 1 comment Download
M base/task_scheduler/scheduler_worker_pool_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 20 chunks +106 lines, -25 lines 0 comments Download
M base/task_scheduler/scheduler_worker_pool_impl_unittest.cc View 1 2 3 4 5 6 7 6 chunks +175 lines, -7 lines 0 comments Download
M base/task_scheduler/scheduler_worker_pool_params.h View 1 2 3 4 5 6 7 8 3 chunks +14 lines, -2 lines 0 comments Download
M base/task_scheduler/scheduler_worker_pool_params.cc View 1 2 3 4 5 2 chunks +6 lines, -2 lines 0 comments Download
M base/task_scheduler/scheduler_worker_stack.h View 1 2 3 4 2 chunks +11 lines, -5 lines 0 comments Download
M base/task_scheduler/scheduler_worker_stack.cc View 2 chunks +11 lines, -2 lines 0 comments Download
M base/task_scheduler/scheduler_worker_stack_unittest.cc View 2 chunks +82 lines, -0 lines 0 comments Download
M base/task_scheduler/task_scheduler_impl_unittest.cc View 1 2 3 4 5 6 7 8 2 chunks +5 lines, -4 lines 0 comments Download

Depends on Patchset:

Messages

Total messages: 67 (33 generated)
robliao
4 years, 5 months ago (2016-07-02 00:07:34 UTC) #2
fdoray
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode525 base/task_scheduler/scheduler_worker_pool_impl.cc:525: return suggested_reclaim_time_; From scheduler_worker.cc: while (...) { scoped_refptr<Sequence> sequence ...
4 years, 5 months ago (2016-07-04 19:41:33 UTC) #4
gab
lg, a single comment for now and +1 to Francois'. https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 ...
4 years, 5 months ago (2016-07-07 15:58:31 UTC) #5
robliao
Thanks for the review! https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode525 base/task_scheduler/scheduler_worker_pool_impl.cc:525: return suggested_reclaim_time_; On 2016/07/04 19:41:32, ...
4 years, 5 months ago (2016-07-07 17:49:17 UTC) #6
fdoray
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode608 base/task_scheduler/scheduler_worker_pool_impl.cc:608: if (!idle_workers_stack_.Contains(worker)) On 2016/07/07 17:49:16, robliao wrote: > On ...
4 years, 5 months ago (2016-07-07 20:45:57 UTC) #7
robliao
Updated. Thanks! https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc File base/task_scheduler/scheduler_worker_pool_impl_unittest.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc#newcode498 base/task_scheduler/scheduler_worker_pool_impl_unittest.cc:498: waiter_.Signal(); On 2016/07/07 20:45:57, fdoray wrote: > ...
4 years, 5 months ago (2016-07-08 17:25:50 UTC) #8
fdoray
lgtm with nits and something that could be addressed in a separate CL if you ...
4 years, 5 months ago (2016-07-08 18:58:07 UTC) #9
robliao
Went with test controlled detachment to fix the race. Thanks! https://codereview.chromium.org/2116163002/diff/40001/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/40001/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode183 ...
4 years, 5 months ago (2016-07-08 21:17:03 UTC) #15
robliao
On 2016/07/08 21:17:03, robliao wrote: > Went with test controlled detachment to fix the race. ...
4 years, 5 months ago (2016-07-12 19:58:08 UTC) #20
robliao
Cc danakj for optional review.
4 years, 5 months ago (2016-07-13 17:07:46 UTC) #21
gab
lg, full review this time, comments below https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && ...
4 years, 5 months ago (2016-07-13 18:36:32 UTC) #26
robliao
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/13 18:36:31, gab wrote: > > ...
4 years, 5 months ago (2016-07-13 20:19:47 UTC) #28
gab
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/13 20:19:46, robliao wrote: > On ...
4 years, 5 months ago (2016-07-13 21:07:55 UTC) #29
robliao
Rebased and incorporated some more changes. https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On ...
4 years, 5 months ago (2016-07-19 22:03:47 UTC) #31
gab
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/19 22:03:47, robliao wrote: > On ...
4 years, 5 months ago (2016-07-20 01:45:21 UTC) #32
fdoray
still lgtm w/ comments https://codereview.chromium.org/2116163002/diff/40001/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/40001/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode534 base/task_scheduler/scheduler_worker_pool_impl.cc:534: !outer_->HasJoinedForTesting(); On 2016/07/08 21:17:03, robliao ...
4 years, 5 months ago (2016-07-20 14:15:44 UTC) #33
robliao
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/20 01:45:21, gab wrote: > On ...
4 years, 5 months ago (2016-07-20 19:44:01 UTC) #35
danakj
On Wed, Jul 20, 2016 at 12:44 PM, <robliao@chromium.org> wrote: > > > https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc > ...
4 years, 5 months ago (2016-07-20 20:17:46 UTC) #38
gab
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/20 19:44:00, robliao wrote: > On ...
4 years, 5 months ago (2016-07-20 20:26:31 UTC) #39
robliao
The way that the atomic increment is implemented for x86 on Windows is via _InterlockedExchangeAdd, ...
4 years, 5 months ago (2016-07-20 20:58:20 UTC) #40
danakj
On Wed, Jul 20, 2016 at 1:58 PM, Robert Liao <robliao@chromium.org> wrote: > The way ...
4 years, 5 months ago (2016-07-20 21:00:41 UTC) #43
robliao
Yeah, I think atomicops are indeed atomic. Even the arm64 version of NoBarrier_AtomicIncrement <https://cs.chromium.org/chromium/src/v8/src/base/atomicops_internals_arm64_gcc.h?q=NoBarrier_AtomicIncrement> attempts ...
4 years, 5 months ago (2016-07-20 21:08:02 UTC) #44
robliao
*Barriers are required on both sides on the Barrier_AtomicIncrement version. On Wed, Jul 20, 2016 ...
4 years, 5 months ago (2016-07-20 21:08:27 UTC) #45
robliao
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/20 20:26:31, gab wrote: > On ...
4 years, 5 months ago (2016-07-20 22:18:03 UTC) #49
gab
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/20 22:18:03, robliao wrote: > On ...
4 years, 5 months ago (2016-07-21 13:43:22 UTC) #50
fdoray
https://codereview.chromium.org/2116163002/diff/400001/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/400001/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode541 base/task_scheduler/scheduler_worker_pool_impl.cc:541: (Time::Now() - idle_start_time_) > outer_->suggested_reclaim_time_ && On 2016/07/21 13:43:22, ...
4 years, 5 months ago (2016-07-21 13:59:08 UTC) #51
robliao
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/21 13:43:21, gab wrote: > On ...
4 years, 5 months ago (2016-07-21 18:44:24 UTC) #52
gab
https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On 2016/07/21 18:44:23, robliao wrote: > On ...
4 years, 5 months ago (2016-07-21 21:24:24 UTC) #53
robliao
Added a fence to the load. https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc File base/task_scheduler/scheduler_worker_pool_impl.cc (right): https://codereview.chromium.org/2116163002/diff/1/base/task_scheduler/scheduler_worker_pool_impl.cc#newcode531 base/task_scheduler/scheduler_worker_pool_impl.cc:531: !subtle::Release_Load(&num_single_threaded_runners_) && On ...
4 years, 5 months ago (2016-07-22 16:44:07 UTC) #54
gab
lgtm, thanks. Keep an eye on https://codereview.chromium.org/2163753004/ to fix lock+bool usage after it lands.
4 years, 5 months ago (2016-07-22 16:47:01 UTC) #57
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2116163002/440001
4 years, 5 months ago (2016-07-22 18:07:29 UTC) #62
commit-bot: I haz the power
Committed patchset #12 (id:440001)
4 years, 5 months ago (2016-07-22 18:12:32 UTC) #64
commit-bot: I haz the power
Patchset 12 (id:??) landed as https://crrev.com/8a4029212fd36fdd8befc9479d6e2966bd27b95e Cr-Commit-Position: refs/heads/master@{#407205}
4 years, 5 months ago (2016-07-22 18:15:58 UTC) #66
gab
4 years, 5 months ago (2016-07-25 14:46:27 UTC) #67
Message was sent while issue was closed.
https://codereview.chromium.org/2116163002/diff/440001/base/task_scheduler/sc...
File base/task_scheduler/scheduler_worker_pool_impl.h (right):

https://codereview.chromium.org/2116163002/diff/440001/base/task_scheduler/sc...
base/task_scheduler/scheduler_worker_pool_impl.h:169: bool
worker_detachment_allowed_ = true;
https://codereview.chromium.org/2163753004/ landed, let's follow-up with using
an AtomicFlag for this, thanks!

Powered by Google App Engine
This is Rietveld 408576698