New issue
Advanced search Search tips

Issue 728208 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Jul 25
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocked on:
issue 839110

Blocking:
issue 553459



Sign in to add a comment

Do not create separate pools for TaskPriority::BACKGROUND tasks on platforms that don't support thread priorities.

Project Member Reported by fdoray@chromium.org, May 31 2017

Issue description

Currently, TaskPriority::BACKGROUND tasks run in their own pools on all platforms. On platforms that don't support thread priorities, that may effectively allow base::TaskPriority::BACKGROUND tasks to run at a higher priority than TaskPriority::USER_VISIBLE tasks.

To solve that problems, TaskPriority::BACKGROUND shouldn't have their own pools on platforms that don't support thread priorities.

 

Comment 1 Deleted

Comment 2 by gab@chromium.org, Sep 25 2017

Wrong bug #? (Saw this land on what seems like an unrelated bug)

Le mar. 19 sept. 2017 20 h 02, bugdroid1 via monorail <
monorail+v2.3275348242@chromium.org> a écrit :

Comment 3 by fdoray@chromium.org, Sep 25 2017

Yes, wrong bug id. Commented with correct bug id on the CL and pasted commit description on correct bug.
Project Member

Comment 4 by bugdroid1@chromium.org, Oct 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d104321e710ff2d5bc0f776c1008e2e7f307292f

commit d104321e710ff2d5bc0f776c1008e2e7f307292f
Author: Francois Doray <fdoray@chromium.org>
Date: Wed Oct 11 16:27:12 2017

Use "run" instead of "schedule" in base/task_scheduler/.

Use the word "run" instead of "schedule" to mean that a sequence
is running. The word "schedule" will only be used to mean that a
sequence is ready to be handed off to TaskTracker::RunNextTask.

Bug:  728208 
Change-Id: I664836444446a393b72b8dcd16d0eddd5a4aba9d
Reviewed-on: https://chromium-review.googlesource.com/709995
Commit-Queue: François Doray <fdoray@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Reviewed-by: Robert Liao <robliao@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508000}
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/scheduler_single_thread_task_runner_manager_unittest.cc
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/scheduler_worker_pool.h
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/scheduler_worker_pool_impl.cc
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/scheduler_worker_pool_unittest.cc
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/single_thread_task_runner_thread_mode.h
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/task.cc
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/task_scheduler_impl_unittest.cc
[modify] https://crrev.com/d104321e710ff2d5bc0f776c1008e2e7f307292f/base/task_scheduler/task_tracker_unittest.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ffe691baf5e725ca953d49b97a97741ae1df41e5

commit ffe691baf5e725ca953d49b97a97741ae1df41e5
Author: Francois Doray <fdoray@chromium.org>
Date: Thu Oct 12 18:10:17 2017

Cap number of TaskPriority::BACKGROUND tasks in a TaskScheduler.

With this CL, it is possible to set a cap on the number of
TaskPriority::BACKGROUND tasks that are scheduled in a
TaskScheduler instance.

The next step will be to merge the background and foreground
pools on platforms that don't support thread priorities.
Code from this CL will ensure that background tasks never
use all available threads in a pool.

Bug:  728208 
Change-Id: Ide746d3a876e78d1c9f9211a69d49f892b6e1a92
Reviewed-on: https://chromium-review.googlesource.com/615903
Reviewed-by: Robert Liao <robliao@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Commit-Queue: François Doray <fdoray@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508371}
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/BUILD.gn
[add] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/can_schedule_sequence_observer.h
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/platform_native_worker_pool_win.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/platform_native_worker_pool_win.h
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker.h
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker_pool.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker_pool.h
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker_pool_impl.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker_pool_impl.h
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker_stack_unittest.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/scheduler_worker_unittest.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/sequence_sort_key.h
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/task_tracker.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/task_tracker.h
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/task_tracker_posix_unittest.cc
[modify] https://crrev.com/ffe691baf5e725ca953d49b97a97741ae1df41e5/base/task_scheduler/task_tracker_unittest.cc

Comment 6 by gab@chromium.org, May 3 2018

Blockedon: 839110
Project Member

Comment 7 by bugdroid1@chromium.org, May 31 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5e7123e8b4cfdb05b16b8b0498ac49286716b709

commit 5e7123e8b4cfdb05b16b8b0498ac49286716b709
Author: Francois Doray <fdoray@chromium.org>
Date: Thu May 31 18:19:54 2018

TaskScheduler: Rename "worker capacity" to "max tasks".

In an upcoming CL, we will add the possibility to configure the maximum
number of unblocked background tasks that can run in a pool. It is
easier to reason about having a "maximum number of tasks (all priorities)"
and a "maximum number of background tasks", than a "worker capacity"
and a "maximum number of background tasks".

Bug:  728208 
Change-Id: Icc7c5a73839a8c7bb0cdf97c6fdce567f498f375
Reviewed-on: https://chromium-review.googlesource.com/1080017
Commit-Queue: François Doray <fdoray@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563324}
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/base/task_scheduler/scheduler_worker_pool_impl.cc
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/base/task_scheduler/scheduler_worker_pool_impl.h
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/base/task_scheduler/scheduler_worker_pool_params.cc
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/base/task_scheduler/scheduler_worker_pool_params.h
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/base/task_scheduler/scheduler_worker_pool_unittest.cc
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/components/task_scheduler_util/variations_util.cc
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/components/task_scheduler_util/variations_util_unittest.cc
[modify] https://crrev.com/5e7123e8b4cfdb05b16b8b0498ac49286716b709/content/browser/browser_main_loop.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Jun 1 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/231c9d56d60953506427c0840e852ed43e6105ee

commit 231c9d56d60953506427c0840e852ed43e6105ee
Author: Francois Doray <fdoray@chromium.org>
Date: Fri Jun 01 19:02:20 2018

TaskScheduler: Cap the number of background tasks in a pool.

On platforms that don't support background thread priority, we want to
get rid of the background pools and run all tasks in foreground pools,
in order of priority (indeed, the background pools are useless if they
run at the same priority as foreground pools). Before we can do that,
we need to be able to cap the number of background tasks that can run
in a given pool. Otherwise, it would be possible for background tasks
to occupy all threads in a pool (at a time when there are no queued
foreground tasks), and increase the latency of future foreground tasks.

Bug:  728208 
Change-Id: I6dc1d49e7bd88c3185beb24dda07aab3f89c5eaa
Reviewed-on: https://chromium-review.googlesource.com/1076975
Commit-Queue: François Doray <fdoray@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#563745}
[modify] https://crrev.com/231c9d56d60953506427c0840e852ed43e6105ee/base/task_scheduler/scheduler_worker_pool_impl.cc
[modify] https://crrev.com/231c9d56d60953506427c0840e852ed43e6105ee/base/task_scheduler/scheduler_worker_pool_impl.h
[modify] https://crrev.com/231c9d56d60953506427c0840e852ed43e6105ee/base/task_scheduler/scheduler_worker_pool_impl_unittest.cc
[modify] https://crrev.com/231c9d56d60953506427c0840e852ed43e6105ee/base/task_scheduler/scheduler_worker_pool_unittest.cc
[modify] https://crrev.com/231c9d56d60953506427c0840e852ed43e6105ee/base/task_scheduler/task_scheduler_impl.cc
[modify] https://crrev.com/231c9d56d60953506427c0840e852ed43e6105ee/base/task_scheduler/task_tracker.h

Project Member

Comment 9 by bugdroid1@chromium.org, Jun 4 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2

commit 22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2
Author: Francois Doray <fdoray@chromium.org>
Date: Mon Jun 04 14:44:06 2018

TaskScheduler: Run background tasks in foreground pools on platforms without background thread priority.

On platforms that don't support background thread priority, having separate pools
to run background tasks is useless. In fact, it can allow background tasks to run
before foreground tasks (e.g. if the foreground pool is flooded and the background
pool is idle).

This CL removes the background pools on platforms that don't support background
thread priority, and simply runs tasks of all priorities in the same pools, in
order of priority. The size that the background pools would have had is used as
a cap for the number of background tasks that can run in the foreground pools.
This ensures that a foreground pool can't be flooded with background tasks (which
could increase the latency of future foreground tasks).

Bug:  728208 
Change-Id: I8fc26e5980acec79b21c084108152220b32bb267
Reviewed-on: https://chromium-review.googlesource.com/1067669
Commit-Queue: François Doray <fdoray@chromium.org>
Reviewed-by: Gabriel Charette <gab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564086}
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/environment_config.cc
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/environment_config.h
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/scheduler_single_thread_task_runner_manager.cc
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/scheduler_single_thread_task_runner_manager_unittest.cc
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/scheduler_worker.cc
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/scheduler_worker_unittest.cc
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/task_scheduler.h
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/task_scheduler_impl.cc
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/task_scheduler_impl.h
[modify] https://crrev.com/22f0449f4f22f1cb2cab53ba8e1b9d606c1af6e2/base/task_scheduler/task_scheduler_impl_unittest.cc

Status: Fixed (was: Started)

Sign in to add a comment