New issue
Advanced search Search tips

Issue 859963 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 23
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Task



Sign in to add a comment

Add support for more task queues in FrameSchedulerImpl

Project Member Reported by shaseley@google.com, Jul 3

Issue description

Refactor FrameSchedulerImpl to support more task queues, which are to be identified by their queue traits (deferrable, pausable, throttleable, freezable).

This change will enable dynamic mapping of task types to task queues based on queue traits.

Design docs:
https://docs.google.com/document/d/1-OtVYWeFnfICDT_vDqqs66k-R5ZU1NsBQ7bZRlgOH5o/edit

https://docs.google.com/document/d/1Jm4xLPqv013VfZswgmnoQ7-ghJK92Uf3hIT7WcNcFck/edit#
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jul 12

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

commit 520720d455489da4f863ee202944c7dc0171ceaf
Author: Scott Haseley <shaseley@google.com>
Date: Thu Jul 12 01:47:37 2018

[scheduler] Refactor QueueCreationParams, separating out QueueTraits

QueueTraits is the (deferrable, throttleable, pausable, freezable)
4-tuple. We will be associating each non-loading TaskType with a
QueueTraits to map it to a unique task queue.

This CL also forward declares FrameSchedulerImpl in
main_thread_task_queue.h and cleans up the necessary frame_scheduler_impl.h
includes in files that were relying on the indirect include.

Bug:  859963 
Change-Id: I84f883379d718d85e5baf806f199181d7e7bf753
Reviewed-on: https://chromium-review.googlesource.com/1125033
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Scott Haseley <shaseley@google.com>
Cr-Commit-Position: refs/heads/master@{#574454}
[modify] https://crrev.com/520720d455489da4f863ee202944c7dc0171ceaf/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper.cc
[modify] https://crrev.com/520720d455489da4f863ee202944c7dc0171ceaf/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
[modify] https://crrev.com/520720d455489da4f863ee202944c7dc0171ceaf/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.cc
[modify] https://crrev.com/520720d455489da4f863ee202944c7dc0171ceaf/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h
[modify] https://crrev.com/520720d455489da4f863ee202944c7dc0171ceaf/third_party/blink/renderer/platform/scheduler/main_thread/queueing_time_estimator.cc
[modify] https://crrev.com/520720d455489da4f863ee202944c7dc0171ceaf/third_party/blink/renderer/platform/scheduler/test/fake_frame_scheduler.h

Project Member

Comment 2 by bugdroid1@chromium.org, Jul 18

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

commit f87335e795c6018344578acb40c1da2538d3223b
Author: Scott Haseley <shaseley@google.com>
Date: Wed Jul 18 02:33:49 2018

[scheduler] Adding FrameTaskQueueController

FrameTaskQueueController creates and manages the task queues used by
FrameSchedulerImpl. It is responsible for tracking the mappings from
QueueTraits to MainThreadTaskQueues.

This CL adds FrameTaskQueueController and basic task queue management.
Refactoring FrameSchedulerImpl to use this new class will be added in
a follow-up CL.

Design Doc:
https://docs.google.com/document/d/1Jm4xLPqv013VfZswgmnoQ7-ghJK92Uf3hIT7WcNcFck/edit?usp=sharing

Bug:  859963 
Change-Id: Ie9fefaaad83c30f06a13c427e38d54089fc362a4
Reviewed-on: https://chromium-review.googlesource.com/1132691
Commit-Queue: Scott Haseley <shaseley@google.com>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#575912}
[modify] https://crrev.com/f87335e795c6018344578acb40c1da2538d3223b/third_party/blink/renderer/platform/scheduler/BUILD.gn
[add] https://crrev.com/f87335e795c6018344578acb40c1da2538d3223b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
[add] https://crrev.com/f87335e795c6018344578acb40c1da2538d3223b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
[add] https://crrev.com/f87335e795c6018344578acb40c1da2538d3223b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc
[modify] https://crrev.com/f87335e795c6018344578acb40c1da2538d3223b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_task_queue.h

Project Member

Comment 3 by bugdroid1@chromium.org, Jul 18

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

commit a1906884d7752fad6d4e85771516c3f33b685b9e
Author: Scott Haseley <shaseley@google.com>
Date: Wed Jul 18 16:35:42 2018

[scheduler] Add resource loading queues to FrameTaskQueueController

This CL adds another queue type (resource loading) that
FrameTaskQueueController will be responsible for controlling.
FrameTaskQueueController provides methods for creating these queues and
accessing the related voters.

Bug:  859963 
Change-Id: I61b10986a68f87b1c4428b1b3926ecd821ee36fa
Reviewed-on: https://chromium-review.googlesource.com/1137099
Commit-Queue: Scott Haseley <shaseley@google.com>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576090}
[modify] https://crrev.com/a1906884d7752fad6d4e85771516c3f33b685b9e/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
[modify] https://crrev.com/a1906884d7752fad6d4e85771516c3f33b685b9e/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
[modify] https://crrev.com/a1906884d7752fad6d4e85771516c3f33b685b9e/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Jul 19

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

commit e2d89968d57604c3121004103f8aaf6e442dd5a1
Author: Scott Haseley <shaseley@google.com>
Date: Thu Jul 19 20:56:41 2018

[scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController

This CL moves all task queue management and creation to
FrameTaskQueueController and adds the appropriate interface for
accessing queues in FrameTaskQueueController. TaskType to QueueTraits
management is handled by FrameSchedulerImpl since it embeds policy, and
FrameTaskQueueController exposes an interface to get non-loading task
queues by QueueTraits, as well as accessing loading and loading
control task queues.

Bug:  859963 
Change-Id: I7db5aaaa148d0dc4f3f70e517e088a205e502db8
Reviewed-on: https://chromium-review.googlesource.com/1142390
Commit-Queue: Scott Haseley <shaseley@google.com>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576619}
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
[modify] https://crrev.com/e2d89968d57604c3121004103f8aaf6e442dd5a1/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Jul 19

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

commit 6bb829af2348e6c94fc4325921218f9d9e886463
Author: Alex Moshchuk <alexmos@chromium.org>
Date: Thu Jul 19 23:34:10 2018

Revert "[scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController"

This reverts commit e2d89968d57604c3121004103f8aaf6e442dd5a1.

Reason for revert: Sorry for the revert, but this appears to be causing consistent crashes in a lot of test steps on Mac Retina Debug (AMD) builder, https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Mac%20Retina%20Debug%20%28AMD%29/, starting with https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Mac%20Retina%20Debug%20%28AMD%29/29724

Failure output includes crashes that look like this:
Received signal 4 <unknown> 00015635d9cb
Received signal 4 <unknown> 0001583019cb
0   libbase.dylib                       0x0000000126266ace base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x0000000126266b8d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x0000000125e462cc base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x00000001262668bf base::debug::(anonymous namespace)::StackDumpSignalHandler(int, __siginfo*, void*) + 1407
4   libsystem_platform.dylib            0x00007fff764fef5a _sigtramp + 26
5   ???                                 0x000000010bb4f000 0x0 + 4491374592
6   libblink_platform.dylib             0x000000015635d86f blink::scheduler::FrameSchedulerImpl::InitializeTaskTypeQueueTraitsMap(std::__1::array<base::Optional<blink::scheduler::MainThreadTaskQueue::QueueTraits>, 51ul>&) + 255
7   libblink_platform.dylib             0x0000000156385aab blink::scheduler::MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() + 1675
8   libblink_platform.dylib             0x0000000156380325 blink::scheduler::MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() + 21
9   libblink_platform.dylib             0x000000015637df5c blink::scheduler::MainThreadSchedulerImpl::MainThreadSchedulerImpl(std::__1::unique_ptr<base::sequence_manager::SequenceManager, std::__1::default_delete<base::sequence_manager::SequenceManager> >, base::Optional<base::Time>) + 348
10  libblink_platform.dylib             0x0000000156382038 blink::scheduler::MainThreadSchedulerImpl::MainThreadSchedulerImpl(std::__1::unique_ptr<base::sequence_manager::SequenceManager, std::__1::default_delete<base::sequence_manager::SequenceManager> >, base::Optional<base::Time>) + 40
11  libblink_platform.dylib             0x0000000156355f42 blink::scheduler::WebThreadScheduler::CreateMainThreadScheduler(base::Optional<base::Time>) + 226
12  libcontent.dylib                    0x000000012fd123e9 content::RendererMain(content::MainFunctionParams const&) + 2585
13  libcontent.dylib                    0x0000000130094a42 content::RunOtherNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) + 482
14  libcontent.dylib                    0x0000000130097d37 content::ContentMainRunnerImpl::Run(bool) + 4519
15  libcontent.dylib                    0x000000013008e8dc content::ContentServiceManagerMainDelegate::RunEmbedderProcess() + 76
16  libembedder.dylib                   0x000000010c4d1c39 service_manager::Main(service_manager::MainParams const&) + 3753
17  libcontent.dylib                    0x00000001300946a9 content::ContentMain(content::ContentMainParams const&) + 89
18  libchrome_dll.dylib                 0x000000010cf25bee ChromeMain + 270
19  Chromium Helper                     0x000000010bb4ad82 main + 1538
20  libdyld.dylib                       0x00007fff761f0015 start + 1
21  ???                                 0x0000000000000016 0x0 + 22
[end of stack trace]

another one:

Received signal 4 <unknown> 0001510e79cb
Received signal 4 <unknown> 00015613a9cb
0   libbase.dylib                       0x000000012585eace base::debug::StackTrace::StackTrace(unsigned long) + 1740   libbase.dylib                       0x0000000109330ace base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x000000012585eb8d base::debug::StackTrace::StackTrace(unsigned long) + 29
1   libbase.dylib                       0x0000000109330b8d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x000000012543e2cc base::debug::StackTrace::StackTrace() + 28
2   libbase.dylib                       0x0000000108f102cc base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x000000012585e8bf base::debug::(anonymous namespace)::StackDumpSignalHandler(int, __siginfo*, void*) + 14073   libbase.dylib                       0x00000001093308bf base::debug::(anonymous namespace)::StackDumpSignalHandler(int, __siginfo*, void*) + 1407
4   libsystem_platform.dylib            0x00007fff764fef5a _sigtramp + 26
5   ???                                 0x00000001068d9000 0x0 + 44049080324   libsystem_platform.dylib            0x00007fff764fef5a _sigtramp + 26
5   ???                                 0x000000010b984000 0x0 + 4489494528
6   libblink_platform.dylib             0x00000001510e786f blink::scheduler::FrameSchedulerImpl::InitializeTaskTypeQueueTraitsMap(std::__1::array<base::Optional<blink::scheduler::MainThreadTaskQueue::QueueTraits>, 51ul>&) + 2556   libblink_platform.dylib             0x000000015613a86f blink::scheduler::FrameSchedulerImpl::InitializeTaskTypeQueueTraitsMap(std::__1::array<base::Optional<blink::scheduler::MainThreadTaskQueue::QueueTraits>, 51ul>&) + 255
7   libblink_platform.dylib             0x0000000156162aab blink::scheduler::MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() + 1675
7   libblink_platform.dylib             0x000000015110faab blink::scheduler::MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() + 1675
8   libblink_platform.dylib             0x000000015615d325 blink::scheduler::MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() + 21
8   libblink_platform.dylib             0x000000015110a325 blink::scheduler::MainThreadSchedulerImpl::SchedulingSettings::SchedulingSettings() + 21
9   libblink_platform.dylib             0x000000015615af5c blink::scheduler::MainThreadSchedulerImpl::MainThreadSchedulerImpl(std::__1::unique_ptr<base::sequence_manager::SequenceManager, std::__1::default_delete<base::sequence_manager::SequenceManager> >, base::Optional<base::Time>) + 348
9   libblink_platform.dylib             0x0000000151107f5c blink::scheduler::MainThreadSchedulerImpl::MainThreadSchedulerImpl(std::__1::unique_ptr<base::sequence_manager::SequenceManager, std::__1::default_delete<base::sequence_manager::SequenceManager> >, base::Optional<base::Time>) + 348
10  libblink_platform.dylib             0x000000015615f038 blink::scheduler::MainThreadSchedulerImpl::MainThreadSchedulerImpl(std::__1::unique_ptr<base::sequence_manager::SequenceManager, std::__1::default_delete<base::sequence_manager::SequenceManager> >, base::Optional<base::Time>) + 40
10  libblink_platform.dylib             0x000000015110c038 blink::scheduler::MainThreadSchedulerImpl::MainThreadSchedulerImpl(std::__1::unique_ptr<base::sequence_manager::SequenceManager, std::__1::default_delete<base::sequence_manager::SequenceManager> >, base::Optional<base::Time>) + 40
11  libblink_platform.dylib             0x0000000156132f42 blink::scheduler::WebThreadScheduler::CreateMainThreadScheduler(base::Optional<base::Time>) + 226
11  libblink_platform.dylib             0x00000001510dff42 blink::scheduler::WebThreadScheduler::CreateMainThreadScheduler(base::Optional<base::Time>) + 226
12  libcontent.dylib                    0x000000012faef3e9 content::RendererMain(content::MainFunctionParams const&) + 2585
12  libcontent.dylib                    0x00000001306f73e9 content::RendererMain(content::MainFunctionParams const&) + 2585
13  libcontent.dylib                    0x000000012fe71a42 content::RunOtherNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) + 482
13  libcontent.dylib                    0x0000000130a79a42 content::RunOtherNamedProcessTypeMain(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, content::MainFunctionParams const&, content::ContentMainDelegate*) + 482
14  libcontent.dylib                    0x000000012fe74d37 content::ContentMainRunnerImpl::Run(bool) + 4519
14  libcontent.dylib                    0x0000000130a7cd37 content::ContentMainRunnerImpl::Run(bool) + 4519
15  libcontent.dylib                    0x000000012fe6b8dc content::ContentServiceManagerMainDelegate::RunEmbedderProcess() + 76
15  libcontent.dylib                    0x0000000130a738dc content::ContentServiceManagerMainDelegate::RunEmbedderProcess() + 76
16  libembedder.dylib                   0x000000012529cc39 service_manager::Main(service_manager::MainParams const&) + 3753
16  libembedder.dylib                   0x0000000108d6ec39 service_manager::Main(service_manager::MainParams const&) + 3753
17  libcontent.dylib                    0x000000012fe716a9 content::ContentMain(content::ContentMainParams const&) + 89
17  libcontent.dylib                    0x0000000130a796a9 content::ContentMain(content::ContentMainParams const&) + 89
18  libchrome_dll.dylib                 0x00000001149bcbee ChromeMain + 27018  libchrome_dll.dylib                 0x000000010d7c6bee ChromeMain + 270
19  Chromium Helper                     0x000000010b927d82 main + 1538
19  Chromium Helper                     0x00000001068d4d82 main + 1538
20  libdyld.dylib                       0x00007fff761f0015 start + 1
20  libdyld.dylib                       0x00007fff761f0015 start + 1
[end of stack trace]


Original change's description:
> [scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController
> 
> This CL moves all task queue management and creation to
> FrameTaskQueueController and adds the appropriate interface for
> accessing queues in FrameTaskQueueController. TaskType to QueueTraits
> management is handled by FrameSchedulerImpl since it embeds policy, and
> FrameTaskQueueController exposes an interface to get non-loading task
> queues by QueueTraits, as well as accessing loading and loading
> control task queues.
> 
> Bug:  859963 
> Change-Id: I7db5aaaa148d0dc4f3f70e517e088a205e502db8
> Reviewed-on: https://chromium-review.googlesource.com/1142390
> Commit-Queue: Scott Haseley <shaseley@google.com>
> Reviewed-by: Alexander Timin <altimin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#576619}

TBR=altimin@chromium.org,panicker@chromium.org,shaseley@google.com

Change-Id: Id530bf4cb109b0d35ff9b038e7620273db0388be
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  859963 
Reviewed-on: https://chromium-review.googlesource.com/1144064
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Commit-Queue: Alex Moshchuk <alexmos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576689}
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
[modify] https://crrev.com/6bb829af2348e6c94fc4325921218f9d9e886463/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 25

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

commit fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4
Author: Scott Haseley <shaseley@google.com>
Date: Wed Jul 25 19:12:55 2018

Reland "[scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController"

This is a reland of e2d89968d57604c3121004103f8aaf6e442dd5a1

Original change's description:
> [scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController
>
> This CL moves all task queue management and creation to
> FrameTaskQueueController and adds the appropriate interface for
> accessing queues in FrameTaskQueueController. TaskType to QueueTraits
> management is handled by FrameSchedulerImpl since it embeds policy, and
> FrameTaskQueueController exposes an interface to get non-loading task
> queues by QueueTraits, as well as accessing loading and loading
> control task queues.
>
> Bug:  859963 
> Change-Id: I7db5aaaa148d0dc4f3f70e517e088a205e502db8
> Reviewed-on: https://chromium-review.googlesource.com/1142390
> Commit-Queue: Scott Haseley <shaseley@google.com>
> Reviewed-by: Alexander Timin <altimin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#576619}

Bug:  859963 
Change-Id: Id2c9179b580759b815602d61b98c99d1f3f5253d
Reviewed-on: https://chromium-review.googlesource.com/1144608
Commit-Queue: Scott Haseley <shaseley@google.com>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578008}
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
[modify] https://crrev.com/fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 25

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

commit b2b40367421d185b499deb0d7d19be7b141a39d8
Author: Derek Cheng <imcheng@chromium.org>
Date: Wed Jul 25 21:23:03 2018

Revert "Reland "[scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController""

This reverts commit fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4.

Reason for revert: Broke https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/linux-chromeos-dbg/6992


[ RUN      ] MainThreadSchedulerImplTest.Tracing
Received signal 11 <unknown> 000000000000
#0 0x7fb8aa445edd base::debug::StackTrace::StackTrace()
#1 0x7fb8aa15949c base::debug::StackTrace::StackTrace()
#2 0x7fb8aa445968 base::debug::(anonymous namespace)::StackDumpSignalHandler()
#3 0x7fb89dd8a330 <unknown>
#4 0x7fb8aa3eb77e logging::CheckEQImpl<>()
#5 0x7fb8aa3e531c base::trace_event::TracedValue::EndDictionary()
#6 0x7fb8aaf41afe blink::scheduler::MainThreadSchedulerImpl::AsValueLocked()
#7 0x7fb8aaf40792 blink::scheduler::MainThreadSchedulerImpl::AsValue()
#8 0x00000181a3aa blink::scheduler::main_thread_scheduler_impl_unittest::MainThreadSchedulerImplTest_Tracing_Test::TestBody()
#9 0x000000c4452e testing::internal::HandleSehExceptionsInMethodIfSupported<>()
#10 0x000000c38192 testing::internal::HandleExceptionsInMethodIfSupported<>()
#11 0x000000c1bd06 testing::Test::Run()
#12 0x000000c1c6f0 testing::TestInfo::Run()
#13 0x000000c1d19f testing::TestCase::Run()
#14 0x000000c2f348 testing::internal::UnitTestImpl::RunAllTests()
#15 0x000000c445be testing::internal::HandleSehExceptionsInMethodIfSupported<>()
#16 0x000000c39942 testing::internal::HandleExceptionsInMethodIfSupported<>()
#17 0x000000c2efa7 testing::UnitTest::Run()
#18 0x000001a62ac1 RUN_ALL_TESTS()
#19 0x000001a5f48b base::TestSuite::Run()
#20 0x000000bd1d45 (anonymous namespace)::runTestSuite()
#21 0x000000a3e560 _ZN4base8internal13FunctorTraitsIPFvPbEvE6InvokeIRKS4_JRKS2_EEEvOT_DpOT0_
#22 0x000000a3e51d _ZN4base8internal12InvokeHelperILb0EvE8MakeItSoIPFvPbEJS4_EEEvOT_DpOT0_
#23 0x000000bd1f75 _ZN4base8internal7InvokerINS0_9BindStateIPFiPNS_9TestSuiteEEJNS0_17UnretainedWrapperIS3_EEEEEFivEE7RunImplIS6_NSt3__15tupleIJS8_EEEJLm0EEEEiOT_OT0_NSD_16integer_sequenceImJXspT1_EEEE
#24 0x000000bd1ec9 _ZN4base8internal7InvokerINS0_9BindStateIPFiPNS_9TestSuiteEEJNS0_17UnretainedWrapperIS3_EEEEEFivEE7RunOnceEPNS0_13BindStateBaseE
#25 0x000001a708fe _ZNO4base12OnceCallbackIFivEE3RunEv
#26 0x000001a697d0 base::(anonymous namespace)::LaunchUnitTestsInternal()
#27 0x000001a69645 base::LaunchUnitTests()
#28 0x000000bd1cd6 main
#29 0x7fb89d4c3f45 __libc_start_main
#30 0x000000552d1a _start
  r8: 0000000000000001  r9: 00007fff6f9d4b30 r10: 0000000000000000 r11: 0000000000000000
 r12: 0000000000552cf0 r13: 00007fff6f9d6af0 r14: 0000000000000000 r15: 0000000000000000
  di: 00007fb8aa50a878  si: 200031ca83cdc758  bp: 00007fff6f9d4990  bx: 0000000000000000
  dx: 00007fff6f9d4ae8  ax: 00007fb8aa50a800  cx: 0000000000000000  sp: 00007fff6f9d4960
  ip: 00007fb8aa3eb77e efl: 0000000000010246 cgf: 0000000000000033 erf: 0000000000000000
 trp: 000000000000000d msk: 0000000000000000 cr2: 0000000000000000
[end of stack trace]
Calling _exit(1). Core file will not be generated.


Original change's description:
> Reland "[scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController"
> 
> This is a reland of e2d89968d57604c3121004103f8aaf6e442dd5a1
> 
> Original change's description:
> > [scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController
> >
> > This CL moves all task queue management and creation to
> > FrameTaskQueueController and adds the appropriate interface for
> > accessing queues in FrameTaskQueueController. TaskType to QueueTraits
> > management is handled by FrameSchedulerImpl since it embeds policy, and
> > FrameTaskQueueController exposes an interface to get non-loading task
> > queues by QueueTraits, as well as accessing loading and loading
> > control task queues.
> >
> > Bug:  859963 
> > Change-Id: I7db5aaaa148d0dc4f3f70e517e088a205e502db8
> > Reviewed-on: https://chromium-review.googlesource.com/1142390
> > Commit-Queue: Scott Haseley <shaseley@google.com>
> > Reviewed-by: Alexander Timin <altimin@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#576619}
> 
> Bug:  859963 
> Change-Id: Id2c9179b580759b815602d61b98c99d1f3f5253d
> Reviewed-on: https://chromium-review.googlesource.com/1144608
> Commit-Queue: Scott Haseley <shaseley@google.com>
> Reviewed-by: Alexander Timin <altimin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#578008}

TBR=altimin@chromium.org,panicker@chromium.org,shaseley@google.com

Change-Id: Ia71d2641655c8100b82a8ce7e4a11009d19b5e9a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  859963 
Reviewed-on: https://chromium-review.googlesource.com/1150585
Reviewed-by: Derek Cheng <imcheng@chromium.org>
Commit-Queue: Derek Cheng <imcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578067}
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
[modify] https://crrev.com/b2b40367421d185b499deb0d7d19be7b141a39d8/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc

Project Member

Comment 8 by bugdroid1@chromium.org, Jul 26

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

commit 99e57179f99e35215b846ace54188a18260aeaff
Author: Scott Haseley <shaseley@google.com>
Date: Thu Jul 26 22:22:17 2018

Reland "Reland "[scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController""

This is a reland of fa8e9207b7ab56db8ecd5ef5be21c1944b27a6c4

Original change's description:
>Reland "[scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController"
>
>This is a reland of e2d89968d57604c3121004103f8aaf6e442dd5a1
>
>Original change's description:
>> [scheduler] Refactor FrameSchedulerImpl to use FrameTaskQueueController
>>
>> This CL moves all task queue management and creation to
>> FrameTaskQueueController and adds the appropriate interface for
>> accessing queues in FrameTaskQueueController. TaskType to QueueTraits
>> management is handled by FrameSchedulerImpl since it embeds policy, and
>> FrameTaskQueueController exposes an interface to get non-loading task
>> queues by QueueTraits, as well as accessing loading and loading
>> control task queues.
>>
>> Bug:  859963 
>> Change-Id: I7db5aaaa148d0dc4f3f70e517e088a205e502db8
>> Reviewed-on: https://chromium-review.googlesource.com/1142390
>> Commit-Queue: Scott Haseley <shaseley@google.com>
>> Reviewed-by: Alexander Timin <altimin@chromium.org>
>> Cr-Commit-Position: refs/heads/master@{#576619}
>
>Bug:  859963 
>Change-Id: Id2c9179b580759b815602d61b98c99d1f3f5253d
>Reviewed-on: https://chromium-review.googlesource.com/1144608
>Commit-Queue: Scott Haseley <shaseley@google.com>
>Reviewed-by: Alexander Timin <altimin@chromium.org>
>Cr-Commit-Position: refs/heads/master@{#578008}

Bug:  859963 
Change-Id: I57e49ea8a7c60b2f0e33905a6701fcb96b5b28bf
Reviewed-on: https://chromium-review.googlesource.com/1150910
Commit-Queue: Scott Haseley <shaseley@google.com>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578464}
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.cc
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller.h
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
[modify] https://crrev.com/99e57179f99e35215b846ace54188a18260aeaff/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc

Project Member

Comment 9 by bugdroid1@chromium.org, Jul 30

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

commit 8aefbd89b8fe26a736055fb5393047f32dcba83a
Author: Scott Haseley <shaseley@google.com>
Date: Mon Jul 30 20:00:48 2018

[scheduler] Add ThrottleAndFreezeTaskTypes experiment

Add support for setting the throttleable and freezable task types
through field trial parameters.

BUG:  859963 
Change-Id: Icca5df00fd7a918e52f9c4c7e08b0a85515ddbb2
Reviewed-on: https://chromium-review.googlesource.com/1143891
Commit-Queue: Scott Haseley <shaseley@google.com>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579133}
[modify] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/BUILD.gn
[add] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/child/features.cc
[modify] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/child/features.h
[modify] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
[add] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.cc
[add] https://crrev.com/8aefbd89b8fe26a736055fb5393047f32dcba83a/third_party/blink/renderer/platform/scheduler/main_thread/task_type_names.h

Project Member

Comment 10 by bugdroid1@chromium.org, Aug 3

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

commit 7757f6c3f7beb2f0ba9433da33b0619ac719031b
Author: Scott Haseley <shaseley@google.com>
Date: Fri Aug 03 14:33:23 2018

[scheduler] Move stop-non-timers-in-background flag to blink features

The StopNonTimersInBackground flag is used by scheduler to initialize
the freezable bits for tasks. This happens before Blink initialization,
so the flag wasn't set yet when initializing QueueTraits. This CL moves
the flag from runtime enabled features to blink features, which are
initialized earlier and can be checked directly during QueueTraits
initialization.

BUG:  859963 

Change-Id: I62e9896cd3c75a04d23372b44e9697432d109088
Reviewed-on: https://chromium-review.googlesource.com/1159205
Reviewed-by: Alexander Timin <altimin@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Scott Haseley <shaseley@google.com>
Cr-Commit-Position: refs/heads/master@{#580540}
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/chrome/browser/about_flags.cc
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/content/child/runtime_features.cc
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/content/public/common/content_features.cc
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/content/public/common/content_features.h
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/common/features.cc
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/public/common/features.h
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/public/platform/web_runtime_features.h
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/renderer/platform/runtime_enabled_features.json5
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
[modify] https://crrev.com/7757f6c3f7beb2f0ba9433da33b0619ac719031b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Aug 20

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

commit c993165c1714576d4b7b77c3b1996193721b468e
Author: Scott Haseley <shaseley@google.com>
Date: Mon Aug 20 18:45:09 2018

[scheduler] FrameSchedulerImpl cleanup

This CL cleans up a few items in FrameSchedulerImpl from migrating to
frame-level scheduling and using FrameTaskQueueController:
 1) Rename variables methods to reflect the possibility of multiple
    throttleable task queues.
 2) Separate updating throttling state from updating throttleable task
    queues (to remove second iteration over task queues).
 3) Call UpdateQueuePolicy for newly created task queues which will set
    voter enabled (including frozen) and task queue priority.
 4) Fix ref count churn in UpdateQueuePolicy().

Also, a few misc cleanup items:
 1) Fix typo in components/scheduling_metrics/OWNERS
 2) Remove a file from BUILD that no longer exists.

Bug:  859963 
Change-Id: Ia10613f92f1a91abb463f560ead1cbb5e91971d7
Reviewed-on: https://chromium-review.googlesource.com/1178964
Commit-Queue: Scott Haseley <shaseley@google.com>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584513}
[modify] https://crrev.com/c993165c1714576d4b7b77c3b1996193721b468e/components/scheduling_metrics/OWNERS
[modify] https://crrev.com/c993165c1714576d4b7b77c3b1996193721b468e/third_party/blink/public/BUILD.gn
[modify] https://crrev.com/c993165c1714576d4b7b77c3b1996193721b468e/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
[modify] https://crrev.com/c993165c1714576d4b7b77c3b1996193721b468e/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.h

Status: Fixed (was: Started)

Sign in to add a comment