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

Issue 2019763002: TaskScheduler: Atomic operations in TaskTracker (Closed)

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

Description

TaskScheduler: Atomic operations in TaskTracker With this CL, TaskTracker never acquires a lock except when shutdown is not in progress. TaskTracker::State wraps an Atomic32 whose LSB indicates whether shutdown has been initiated and whose other bits count the number of tasks blocking shutdown. This State is accessed in the following situations: A) Before a BLOCK_SHUTDOWN task is posted Increment the Atomic32 by 2 [1] and read it. If the "shutdown initiated" bit is set, acquire the lock [2] to: - DCHECK that shutdown hasn't completed - Record a UMA histogram B) Before a CONTINUE_ON_SHUTDOWN or SKIP_ON_SHUTDOWN task is posted: Read the Atomic32. The task is allowed to be posted iff the "shutdown initiated" bit isn't set. C) Before a BLOCK_SHUTDOWN task is executed. Read the Atomic32. DCHECK that there are tasks blocking shutdown (number of tasks blocking shutdown was incremented when the task was posted). D) Before a SKIP_ON_SHUTDOWN task is executed. Increment the Atomic32 by 2 [1] and read it. If the "shutdown initiated" bit isn't set: The task is allowed to be executed. If the "shutdown initiated bit is set: Decrement the Atomic32 by 2 [1] (to revert the incorrect increment) and read it. If the number of tasks blocking shutdown became zero, do [3] (note: this can trigger [3] more than once during shutdown as multiple threads realize that shutdown has been requested, but [3] is resilient to this). E) Before a CONTINUE_ON_SHUTDOWN task is executed. Read the Atomic32. Allow the task to be executed iff the "shutdown initiated" bit isn't set. F) After a BLOCK_SHUTDOWN or SKIP_ON_SHUTDOWN task is executed: Decrement the Atomic32 by 2 [1] and read it. If the number of tasks blocking shutdown became zero and "shutdown initiated", do [3]. G) When Shutdown() is called: Acquire the lock. Instantiate the shutdown complete event. Increment the Atomic32 by 1 (to set the "shutdown initiated bit") and read it. From this moment, if a thread causes the number of tasks blocking shutdown to become zero, it will do [3]. If there are no tasks blocking shutdown, signal the event and return. Wait until the shutdown event is signaled. [1] Incrementing the Atomic32 by 2 increments the number of tasks blocking shutdown by 1 because the LSB is used to indicate whether shutdown has been initiated. [2] The TaskTracker must be locked to access the shutdown event and the number of BLOCK_SHUTDOWN tasks posted during shutdown. [3] These actions are performed by OnNumTasksBlockingShutdownIsZero(): - Acquire the lock. - DCHECK that shutdown has started (i.e. "shutdown initiated" bit is set and shutdown event exists). - Signal the shutdown complete event (note: this event can be signaled more than once per multiple threads reaching the conclusion that shutdown is complete, ref. SKIP_ON_SHUTDOWN dance above, but this is harmless) Benchmark - 10 million increment/decrement per thread Atomic Lock 4 threads Win Z840 1.5s 2.2s 4 threads Ubuntu VM 0.8s 4.9s 4 threads MacBookPro 1.8s 270.7s 8 threads Win Z840 3.0s 5.5s 8 threads Ubuntu VM 1.6s 11.8s 8 threads MacBookPro 4.2s 559.0s BUG=553459 Committed: https://crrev.com/caa8d6675e165cd04fc22f24b36c1076d6720388 Cr-Commit-Position: refs/heads/master@{#406260}

Patch Set 1 #

Total comments: 13

Patch Set 2 : CR robliao #8 #

Patch Set 3 : CR gab #10 #

Patch Set 4 : CR gab #10 #

Total comments: 14

Patch Set 5 : CR gab #26 #

Total comments: 13

Patch Set 6 : CR gab/robliao #30-31 #

Total comments: 24

Patch Set 7 : CR danakj/gab #38-39 #

Total comments: 2

Patch Set 8 : CR danakj #45-46 #

Total comments: 7

Patch Set 9 : CR danakj #51 (add memory barriers) #

Unified diffs Side-by-side diffs Delta from patch set Stats (+400 lines, -104 lines) Patch
M base/task_scheduler/scheduler_worker.cc View 1 2 3 4 5 6 1 chunk +1 line, -1 line 0 comments Download
M base/task_scheduler/task_tracker.h View 1 2 3 4 5 6 3 chunks +18 lines, -16 lines 0 comments Download
M base/task_scheduler/task_tracker.cc View 1 2 3 4 5 6 7 8 5 chunks +177 lines, -62 lines 0 comments Download
M base/task_scheduler/task_tracker_unittest.cc View 1 2 3 4 5 6 13 chunks +204 lines, -25 lines 0 comments Download

Messages

Total messages: 71 (23 generated)
fdoray
Micro-benchmark: atomic counter vs. lock. Release build on Windows. 4 threads: Atomic: 0.19s Lock: 1.9s ...
4 years, 6 months ago (2016-05-27 18:13:19 UTC) #1
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2019763002/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2019763002/1
4 years, 6 months ago (2016-05-27 18:13:52 UTC) #3
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 6 months ago (2016-05-27 19:39:13 UTC) #5
fdoray
PTAL
4 years, 6 months ago (2016-05-27 20:09:18 UTC) #7
robliao
https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode46 base/task_scheduler/task_tracker.cc:46: subtle::Barrier_AtomicIncrement(&bits_, kShutdownHasStartedMask); If this gets called twice, doesn't that ...
4 years, 6 months ago (2016-05-27 22:16:15 UTC) #8
fdoray
PTAnL https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode46 base/task_scheduler/task_tracker.cc:46: subtle::Barrier_AtomicIncrement(&bits_, kShutdownHasStartedMask); On 2016/05/27 22:16:14, robliao wrote: > ...
4 years, 6 months ago (2016-05-30 15:48:05 UTC) #9
gab
A few CL description notes and a major correction on the benchmark code below: 1) ...
4 years, 6 months ago (2016-05-31 13:08:17 UTC) #10
robliao
https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode80 base/task_scheduler/task_tracker.cc:80: const auto new_bits = subtle::NoBarrier_AtomicIncrement( On 2016/05/30 15:48:04, fdoray ...
4 years, 6 months ago (2016-06-01 18:32:27 UTC) #14
fdoray
On 2016/05/31 13:08:17, gab wrote: > A few CL description notes and a major correction ...
4 years, 6 months ago (2016-06-02 19:25:08 UTC) #19
fdoray
On 2016/05/31 13:08:17, gab wrote: > A few CL description notes and a major correction ...
4 years, 6 months ago (2016-06-06 16:43:35 UTC) #20
robliao
https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode80 base/task_scheduler/task_tracker.cc:80: const auto new_bits = subtle::NoBarrier_AtomicIncrement( On 2016/06/06 16:43:35, fdoray ...
4 years, 6 months ago (2016-06-06 19:16:30 UTC) #21
fdoray
robliao@: PTAnL https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode80 base/task_scheduler/task_tracker.cc:80: const auto new_bits = subtle::NoBarrier_AtomicIncrement( On 2016/06/06 ...
4 years, 6 months ago (2016-06-16 13:19:37 UTC) #22
robliao
https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode80 base/task_scheduler/task_tracker.cc:80: const auto new_bits = subtle::NoBarrier_AtomicIncrement( On 2016/06/16 13:19:37, fdoray ...
4 years, 6 months ago (2016-06-16 20:40:45 UTC) #23
fdoray
https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode80 base/task_scheduler/task_tracker.cc:80: const auto new_bits = subtle::NoBarrier_AtomicIncrement( On 2016/06/16 20:40:45, robliao ...
4 years, 6 months ago (2016-06-17 20:28:49 UTC) #24
robliao
https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/1/base/task_scheduler/task_tracker.cc#newcode80 base/task_scheduler/task_tracker.cc:80: const auto new_bits = subtle::NoBarrier_AtomicIncrement( On 2016/06/17 20:28:49, fdoray ...
4 years, 6 months ago (2016-06-18 00:10:27 UTC) #25
gab
lvg, couple things => In CL description: 1) With this CL, TaskTracker never acquires a ...
4 years, 6 months ago (2016-06-20 16:46:21 UTC) #26
fdoray
PTAnL https://codereview.chromium.org/2019763002/diff/60001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/60001/base/task_scheduler/task_tracker.cc#newcode55 base/task_scheduler/task_tracker.cc:55: new_value / kNumTasksBlockingShutdownIncrement; On 2016/06/20 16:46:20, gab wrote: ...
4 years, 6 months ago (2016-06-20 19:31:35 UTC) #28
gab
lgtm w/ few comments, thanks! https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc#newcode48 base/task_scheduler/task_tracker.cc:48: subtle::Barrier_AtomicIncrement(&bits_, kShutdownHasStartedMask); NoBarrier? https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc#newcode79 ...
4 years, 6 months ago (2016-06-20 21:06:51 UTC) #30
robliao
lgtm https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc#newcode48 base/task_scheduler/task_tracker.cc:48: subtle::Barrier_AtomicIncrement(&bits_, kShutdownHasStartedMask); On 2016/06/20 21:06:51, gab wrote: > ...
4 years, 6 months ago (2016-06-20 21:32:20 UTC) #31
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2019763002/80001
4 years, 5 months ago (2016-06-27 17:30:19 UTC) #33
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: ios-simulator on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios-simulator/builds/27287) ios-simulator-gn on ...
4 years, 5 months ago (2016-06-27 17:34:10 UTC) #35
fdoray
danakj@: Can you review this CL? Thanks. https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc#newcode48 base/task_scheduler/task_tracker.cc:48: subtle::Barrier_AtomicIncrement(&bits_, kShutdownHasStartedMask); ...
4 years, 5 months ago (2016-06-29 18:22:37 UTC) #37
gab
nits still lgtm https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc#newcode101 base/task_scheduler/task_tracker.cc:101: static constexpr subtle::Atomic32 kNumTasksBlockingShutdownIncrement = 2; ...
4 years, 5 months ago (2016-06-29 21:38:48 UTC) #38
danakj
https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc#newcode60 base/task_scheduler/task_tracker.cc:60: bool ShutdownHasStarted() const { nit: i prefer names that ...
4 years, 5 months ago (2016-06-30 22:25:36 UTC) #39
fdoray
danakj@: PTAnL https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/80001/base/task_scheduler/task_tracker.cc#newcode101 base/task_scheduler/task_tracker.cc:101: static constexpr subtle::Atomic32 kNumTasksBlockingShutdownIncrement = 2; On ...
4 years, 5 months ago (2016-07-04 20:53:11 UTC) #40
danakj
https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc#newcode134 base/task_scheduler/task_tracker.cc:134: // From now, if a thread causes the number ...
4 years, 5 months ago (2016-07-06 18:50:24 UTC) #41
danakj
https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc#newcode81 base/task_scheduler/task_tracker.cc:81: new_bits >> kShutdownHasStartedMask; On 2016/07/04 20:53:11, fdoray wrote: > ...
4 years, 5 months ago (2016-07-06 18:51:48 UTC) #42
fdoray
PTAnL. Let me know if I didn't understand your concerns correctly. https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): ...
4 years, 5 months ago (2016-07-06 19:19:40 UTC) #43
fdoray
On 2016/07/06 18:51:48, danakj wrote: > https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc > File base/task_scheduler/task_tracker.cc (right): > > https://codereview.chromium.org/2019763002/diff/100001/base/task_scheduler/task_tracker.cc#newcode81 > ...
4 years, 5 months ago (2016-07-06 21:11:47 UTC) #44
danakj
On 2016/07/06 21:11:47, fdoray wrote: > As long as |bits_| isn't negative, bit shift is ...
4 years, 5 months ago (2016-07-07 22:59:11 UTC) #45
danakj
https://codereview.chromium.org/2019763002/diff/120001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/120001/base/task_scheduler/task_tracker.cc#newcode58 base/task_scheduler/task_tracker.cc:58: new_value / kNumTasksBlockingShutdownIncrement; Why are some / Increment, and ...
4 years, 5 months ago (2016-07-07 23:05:21 UTC) #46
fdoray
danakj@: PTAnL https://codereview.chromium.org/2019763002/diff/120001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/120001/base/task_scheduler/task_tracker.cc#newcode58 base/task_scheduler/task_tracker.cc:58: new_value / kNumTasksBlockingShutdownIncrement; On 2016/07/07 23:05:21, danakj ...
4 years, 5 months ago (2016-07-08 15:33:40 UTC) #47
danakj
https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc#newcode82 base/task_scheduler/task_tracker.cc:82: DCHECK_LT(num_tasks_blocking_shutdown, So I'm still a bit unsure why this ...
4 years, 5 months ago (2016-07-08 21:21:29 UTC) #48
gab
@dana: I'm chiming in for Francois while he's on vacation (and I'm also OOO starting ...
4 years, 5 months ago (2016-07-13 18:49:10 UTC) #49
danakj
https://codereview.chromium.org/2114993003/ is super relevant, another case of people considering atomics, and another reason I've been ...
4 years, 5 months ago (2016-07-13 20:11:16 UTC) #50
danakj
https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc#newcode114 base/task_scheduler/task_tracker.cc:114: // correct because it encapsulates all shutdown state. Barrier ...
4 years, 5 months ago (2016-07-13 22:39:18 UTC) #51
fdoray
PTAnL https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc#newcode82 base/task_scheduler/task_tracker.cc:82: DCHECK_LT(num_tasks_blocking_shutdown, On 2016/07/08 21:21:29, danakj wrote: > So ...
4 years, 5 months ago (2016-07-18 19:01:15 UTC) #52
danakj
Thanks, LGTM
4 years, 5 months ago (2016-07-18 21:03:52 UTC) #53
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/2019763002/160001
4 years, 5 months ago (2016-07-18 21:32:54 UTC) #58
commit-bot: I haz the power
Try jobs failed on following builders: mac_chromium_rel_ng on master.tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/261883)
4 years, 5 months ago (2016-07-18 22:25:00 UTC) #60
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/2019763002/160001
4 years, 5 months ago (2016-07-19 12:56:26 UTC) #62
commit-bot: I haz the power
Committed patchset #9 (id:160001)
4 years, 5 months ago (2016-07-19 13:19:12 UTC) #64
commit-bot: I haz the power
CQ bit was unchecked.
4 years, 5 months ago (2016-07-19 13:19:18 UTC) #65
commit-bot: I haz the power
Patchset 9 (id:??) landed as https://crrev.com/caa8d6675e165cd04fc22f24b36c1076d6720388 Cr-Commit-Position: refs/heads/master@{#406260}
4 years, 5 months ago (2016-07-19 13:20:58 UTC) #67
gab
lgtm, still wrapping my head around the resolution below, thanks! https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc File base/task_scheduler/task_tracker.cc (right): https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/task_tracker.cc#newcode114 ...
4 years, 5 months ago (2016-07-19 16:22:21 UTC) #68
fdoray
On 2016/07/19 16:22:21, gab wrote: > lgtm, still wrapping my head around the resolution below, ...
4 years, 5 months ago (2016-07-19 20:18:33 UTC) #69
danakj
On Tue, Jul 19, 2016 at 1:18 PM, <fdoray@chromium.org> wrote: > On 2016/07/19 16:22:21, gab ...
4 years, 5 months ago (2016-07-19 20:20:19 UTC) #70
robliao
4 years, 5 months ago (2016-07-19 20:31:26 UTC) #71
Message was sent while issue was closed.
On 2016/07/19 20:20:19, danakj wrote:
> On Tue, Jul 19, 2016 at 1:18 PM, <mailto:fdoray@chromium.org> wrote:
> 
> > On 2016/07/19 16:22:21, gab wrote:
> > > lgtm, still wrapping my head around the resolution below, thanks!
> > >
> > >
> >
> >
>
https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/ta...
> > > File base/task_scheduler/task_tracker.cc (right):
> > >
> > >
> >
> >
>
https://codereview.chromium.org/2019763002/diff/140001/base/task_scheduler/ta...
> > > base/task_scheduler/task_tracker.cc:114: // correct because it
> > encapsulates
> > all
> > > shutdown state. Barrier semantics would
> > > Now that we've changed to use barriers, it would be worth it to redo the
> > > benchmarks in the CL description to get another column for barriers
> > versus no
> > > barriers.
> > >
> > > Great reads I found to educate myself further:
> > >
> > > http://preshing.com/20130618/atomic-vs-non-atomic-operations/
> > >
> >
> >
>
http://preshing.com/20120710/memory-barriers-are-like-source-control-operations/
> > > http://preshing.com/20120913/acquire-and-release-semantics/
> > > http://preshing.com/20120612/an-introduction-to-lock-free-programming/
> > > http://preshing.com/20130922/acquire-and-release-fences/
> > >
> > > Given all of this I think the barriers are correct for the consistency
> > of this
> > > API alone (although as was mentioned in practice there are other things
> > ensuring
> > > consistencies of the actual calls but this API can't know that).
> > >
> > > So long as the benchmarks w/ barriers show that it doesn't matter much
> > I'm
> > happy
> > > with this -- otherwise we may want to go a notch further.
> >
> > Updated benchmarks.
> > tl;dr: Memory barriers don't affect performance.
> >
> > Benchmark - 10 million increment/decrement per thread
> > 10 runs per test case - average (stdev)
> > Atomic no barrier Atomic barrier Lock
> > 8 threads Win Z840 3.04s (0.06) 3.01s (0.05) 5.53s (0.72)
> > 8 threads MacBookPro 3.75s (0.16) 3.76s (0.13) 557.29s (6.12)
> >
> 
> Barriers have 0 impact on x64 fwiw. Might be different on arm (this was
> mentioned on the CL I linked to earlier).
> 
> -- 
> You received this message because you are subscribed to the Google Groups
> "Chromium-reviews" group.
> To unsubscribe from this group and stop receiving emails from it, send an
email
> to mailto:chromium-reviews+unsubscribe@chromium.org.

Performance will also vary on the underlying platform implementation. Might also
want to check Linux.
There's currently an open issue where they're implemented poorly on Linux,
although this impacts the NoBarrier version more.
https://bugs.chromium.org/p/chromium/issues/detail?id=592903

Powered by Google App Engine
This is Rietveld 408576698