New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 765660 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Xoogler
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Feature

Blocked on:
issue 780473



Sign in to add a comment

Rearrange renderer scheduler tracing categories and track more states

Project Member Reported by kraynov@chromium.org, Sep 15 2017

Issue description

The goal is rearranging trace events into 4 categories:

- renderer.scheduler
  Main thread flamegraphs (as now) plus visualisation of main states of RendererScheduler (visibility/use_case/audio/etc).

- disabled-by-default-renderer.scheduler
  Additional information which adds visual noise to the trace viewer but does not increase trace size.
  At this moment this category will include various counters.

- disabled-by-default-renderer.scheduler.verbose
  Various objects dumps while trying to keep trace size reasonable.

- disabled-by-default-renderer.scheduler.debug (currently empty)
  All information that renderer scheduler has, including queued task metadata with location.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Sep 20 2017

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

commit b372c0bc753eeec20df2f768bec385e77e8e101a
Author: Greg Kraynov <kraynov@chromium.org>
Date: Wed Sep 20 00:02:15 2017

[renderer.scheduler] Trace audio playback state.

Trace is_audio_playing changes as an async event.

Bug:  765660 
Change-Id: I2200a0397dcb2838c4ff33f433d7124f84c00cde
Reviewed-on: https://chromium-review.googlesource.com/668576
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#502995}
[modify] https://crrev.com/b372c0bc753eeec20df2f768bec385e77e8e101a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/b372c0bc753eeec20df2f768bec385e77e8e101a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h

Small utils to analyse trace event sizes: https://gist.github.com/gkraynov/a2616bc72afa034c8bb715132ecc05e5

Current state of things:

main
  2109 KiB 	 TaskQueueManager::RunTask
  1169 KiB 	 TaskQueueManager::DoWork
  996 KiB 	 RealTimeDomain::DelayTillNextTask
  246 KiB 	 RendererSchedulerIdlePeriod
  65 KiB 	 TaskQueueThrottler::OnQueueNextWakeUpChanged
  48 KiB 	 RendererScheduler.UseCase
  18 KiB 	 TaskQueueThrottler_TaskQueueThrottled
  18 KiB 	 TaskQueueThrottler_TaskQueueUnthrottled
  11 KiB 	 SingleThreadIdleTaskRunner::RunTask
  5 KiB 	 TaskQueueThrottler::MaybeSchedulePumpThrottledTasks
  4 KiB 	 TaskQueueThrottler::PumpThrottledTasks
  2 KiB 	 RendererScheduler.Backgrounded
  1 KiB 	 TaskQueueManager::UnregisterTaskQueue
  0 KiB 	 IdleCanceledDelayedTaskSweeper::SweepIdleTask
  0 KiB 	 RendererScheduler.AudioPlaying
  0 KiB 	 BudgetPool_DisableThrottling
  0 KiB 	 BudgetPool_EnableThrottling
  0 KiB 	 TaskQueueThrottler_DisableThrottling

details
  186022 KiB 	 TaskQueueManager
  4293 KiB 	 RendererScheduler
  3249 KiB 	 TaskQueueManager::WakeUpReadyDelayedQueues
  1432 KiB 	 worker_default_tq
  819 KiB 	 TaskQueueManager::MaybeScheduleImmediateWorkLocked::PostTask
  414 KiB 	 frame_throttleable_tq
  346 KiB 	 DidProcessTask
  229 KiB 	 compositor_tq
  219 KiB 	 SetIdlePeriodState
  199 KiB 	 RendererSchedulerImpl::DidHandleInputEventOnCompositorThread
  186 KiB 	 RendererScheduler.loading_tasks_seem_expensive
  184 KiB 	 RendererScheduler.timer_tasks_seem_expensive
  174 KiB 	 RendererSchedulerImpl::WillBeginFrame
  165 KiB 	 touchstart_expected_soon
  163 KiB 	 expensive_task_policy
  161 KiB 	 RendererSchedulerImpl::DidHandleInputEventOnMainThread
  156 KiB 	 default_tq
  151 KiB 	 rail_mode
  150 KiB 	 use_case
  150 KiB 	 frame_loading_tq
  109 KiB 	 default_loading_tq
  97 KiB 	 EndIdlePeriod
  91 KiB 	 RendererSchedulerImpl::DidCommitFrameToCompositor
  86 KiB 	 RendererSchedulerImpl::EndIdlePeriod
  70 KiB 	 frame_pausable_tq
  68 KiB 	 StartIdlePeriod
  65 KiB 	 RendererSchedulerImpl::UpdateForInputEventOnCompositorThread
  46 KiB 	 control_tq
  38 KiB 	 is_gesture_active
  35 KiB 	 frame_unpausable_tq
  30 KiB 	 default_timer_tq
  17 KiB 	 idle_tq
  9 KiB 	 OnIdleTaskPostedOnMainThread
  9 KiB 	 OnIdleTaskPosted
  8 KiB 	 RendererScheduler.RendererMainThreadLoad
  5 KiB 	 RendererSchedulerImpl::OnPendingTasksChanged
  5 KiB 	 RendererScheduler.RendererMainThreadLoad.Background
  3 KiB 	 RendererScheduler.RendererMainThreadLoad.Foreground
  3 KiB 	 estimated_queueing_time_for_window
  2 KiB 	 CanExceedIdleDeadlineIfRequired
  1 KiB 	 RendererSchedulerImpl::BeginMainFrameNotExpectedUntil
  1 KiB 	 NotStartingIdlePeriodBecauseDeadlineIsTooClose
  1 KiB 	 frame_loading_control_tq
  1 KiB 	 RendererSchedulerImpl::DidStartProvisionalLoad
  1 KiB 	 RendererSchedulerImpl::SetAllRenderWidgetsHidden
  1 KiB 	 RendererSchedulerImpl::DidCommitProvisionalLoad
  0 KiB 	 RendererSchedulerImpl::ResetForNavigationLocked
  0 KiB 	 RendererSchedulerImpl::OnRendererForegrounded
  0 KiB 	 RendererSchedulerImpl::OnRendererVisible
  0 KiB 	 RendererSchedulerImpl::OnRendererHidden
  0 KiB 	 RendererSchedulerImpl::OnRendererBackgrounded
  0 KiB 	 RendererSchedulerImpl::BeginFrameNotExpectedSoon
  0 KiB 	 RendererSchedulerImpl::OnFirstMeaningfulPaint
  0 KiB 	 UpdateLongIdlePeriodStateAfterIdleTask
  0 KiB 	 EnableLongIdlePeriod

verbose
  <no events>

debug
  <no events>


Gonna move TaskQueueManager and RendererScheduler object dumps to debug category as it tremendous in size.
Project Member

Comment 3 by bugdroid1@chromium.org, Sep 27 2017

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

commit 86bfe06978ca781f21a84f9b8b6e33d93e9bc285
Author: Greg Kraynov <kraynov@chromium.org>
Date: Wed Sep 27 14:38:11 2017

Blink Scheduler: Move heavy object dumps to debug category.

Object dumps of TaskQueueManager and RendererScheduler may take 90% of
the trace. It moved to debug category with the heaviest sections
enabled only when enable_verbose_snapshots is on.

Bug:  765660 
Change-Id: If84edb1c45257f652da65a28dc4253cd7b39c4a4
Reviewed-on: https://chromium-review.googlesource.com/681659
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504666}
[modify] https://crrev.com/86bfe06978ca781f21a84f9b8b6e33d93e9bc285/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
[modify] https://crrev.com/86bfe06978ca781f21a84f9b8b6e33d93e9bc285/third_party/WebKit/Source/platform/scheduler/base/task_queue_manager.cc
[modify] https://crrev.com/86bfe06978ca781f21a84f9b8b6e33d93e9bc285/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc
[modify] https://crrev.com/86bfe06978ca781f21a84f9b8b6e33d93e9bc285/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc

Project Member

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

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

commit 5b3cdd97ad11f994f5671bc5de4ef1f06de81635
Author: Greg Kraynov <kraynov@chromium.org>
Date: Tue Oct 03 08:56:31 2017

Blink Scheduler: Tracing refactoring.

- Support different categories in StateTracer.
- Distinct TRACE_EVENT stubs for each StateTracer category.
- Fixed bug when StateTracer didn't emit initial slice.
- AreVerboseSnaphotsEnabled() helper method.
- WarmupCategories() helper method.
- Removed abandoned worker.scheduler.debug category.

Bug:  765660 
Change-Id: Ic4436fc6bc4268741ae57d3edbb0ae53451e4125
Reviewed-on: https://chromium-review.googlesource.com/692376
Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505989}
[modify] https://crrev.com/5b3cdd97ad11f994f5671bc5de4ef1f06de81635/third_party/WebKit/Source/platform/scheduler/BUILD.gn
[modify] https://crrev.com/5b3cdd97ad11f994f5671bc5de4ef1f06de81635/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
[modify] https://crrev.com/5b3cdd97ad11f994f5671bc5de4ef1f06de81635/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc
[modify] https://crrev.com/5b3cdd97ad11f994f5671bc5de4ef1f06de81635/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/5b3cdd97ad11f994f5671bc5de4ef1f06de81635/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[delete] https://crrev.com/5c6da120dc404e10f642e4540426999875b68017/third_party/WebKit/Source/platform/scheduler/util/state_tracer.h
[add] https://crrev.com/5b3cdd97ad11f994f5671bc5de4ef1f06de81635/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.cc
[add] https://crrev.com/5b3cdd97ad11f994f5671bc5de4ef1f06de81635/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h

Project Member

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

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

commit a1e35c5b6d3334af7da7ce3751f802f34388c6ec
Author: Henrik Kjellander <kjellander@chromium.org>
Date: Tue Oct 03 09:36:52 2017

Revert "Blink Scheduler: Tracing refactoring."

This reverts commit 5b3cdd97ad11f994f5671bc5de4ef1f06de81635.

Reason for revert: Breaks compilation on Linux Builder (dbg):
https://luci-milo.appspot.com/buildbot/chromium.linux/Linux%20Builder%20%28dbg%29/116388

Original change's description:
> Blink Scheduler: Tracing refactoring.
> 
> - Support different categories in StateTracer.
> - Distinct TRACE_EVENT stubs for each StateTracer category.
> - Fixed bug when StateTracer didn't emit initial slice.
> - AreVerboseSnaphotsEnabled() helper method.
> - WarmupCategories() helper method.
> - Removed abandoned worker.scheduler.debug category.
> 
> Bug:  765660 
> Change-Id: Ic4436fc6bc4268741ae57d3edbb0ae53451e4125
> Reviewed-on: https://chromium-review.googlesource.com/692376
> Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
> Reviewed-by: Alexander Timin <altimin@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#505989}

TBR=kraynov@chromium.org,altimin@chromium.org

Change-Id: Id6b6856ed92e8e88d3a916fca919d5d7eb0cc574
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  765660 
Reviewed-on: https://chromium-review.googlesource.com/697444
Reviewed-by: Henrik Kjellander <kjellander@chromium.org>
Commit-Queue: Henrik Kjellander <kjellander@chromium.org>
Cr-Commit-Position: refs/heads/master@{#505991}
[modify] https://crrev.com/a1e35c5b6d3334af7da7ce3751f802f34388c6ec/third_party/WebKit/Source/platform/scheduler/BUILD.gn
[modify] https://crrev.com/a1e35c5b6d3334af7da7ce3751f802f34388c6ec/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
[modify] https://crrev.com/a1e35c5b6d3334af7da7ce3751f802f34388c6ec/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc
[modify] https://crrev.com/a1e35c5b6d3334af7da7ce3751f802f34388c6ec/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/a1e35c5b6d3334af7da7ce3751f802f34388c6ec/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[add] https://crrev.com/a1e35c5b6d3334af7da7ce3751f802f34388c6ec/third_party/WebKit/Source/platform/scheduler/util/state_tracer.h
[delete] https://crrev.com/edf530dc77d657db712928dd9cba2bbac0693aaa/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.cc
[delete] https://crrev.com/edf530dc77d657db712928dd9cba2bbac0693aaa/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h

Regarding revert at comment #5

Steps to reproduce (on Linux):
$ gn gen --args='is_debug=true is_component_build=true' out/Debug
$ ninja -C out/Debug blink_platform_unittests
Project Member

Comment 7 by bugdroid1@chromium.org, Oct 3 2017

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

commit 413046b389220ea6bdffc2a0794a1457c3be0943
Author: Greg Kraynov <kraynov@chromium.org>
Date: Tue Oct 03 13:48:15 2017

[Reland] Blink Scheduler: Tracing refactoring.

Added PLATFORM_EXPORT macro missing what caused the revert.

- Support different categories in StateTracer.
- Distinct TRACE_EVENT stubs for each StateTracer category.
- Fixed bug when StateTracer didn't emit initial slice.
- AreVerboseSnaphotsEnabled() helper method.
- WarmupCategories() helper method.
- Removed abandoned worker.scheduler.debug category.

Original CL: https://chromium-review.googlesource.com/692376

Bug:  765660 
Change-Id: Ifd0df2216b7b3e042c56966756be64ab41d4cb3c
Reviewed-on: https://chromium-review.googlesource.com/697446
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506020}
[modify] https://crrev.com/413046b389220ea6bdffc2a0794a1457c3be0943/third_party/WebKit/Source/platform/scheduler/BUILD.gn
[modify] https://crrev.com/413046b389220ea6bdffc2a0794a1457c3be0943/third_party/WebKit/Source/platform/scheduler/base/task_queue_impl.cc
[modify] https://crrev.com/413046b389220ea6bdffc2a0794a1457c3be0943/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler.cc
[modify] https://crrev.com/413046b389220ea6bdffc2a0794a1457c3be0943/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/413046b389220ea6bdffc2a0794a1457c3be0943/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h
[delete] https://crrev.com/7ac0cee74768ad2391241bb89985ee4b51520ee3/third_party/WebKit/Source/platform/scheduler/util/state_tracer.h
[add] https://crrev.com/413046b389220ea6bdffc2a0794a1457c3be0943/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.cc
[add] https://crrev.com/413046b389220ea6bdffc2a0794a1457c3be0943/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h

Project Member

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

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

commit 865500eac2a8420d1efc5f8768a9249bd86f10f3
Author: Greg Kraynov <kraynov@chromium.org>
Date: Wed Oct 04 11:10:55 2017

Blink Scheduler: Trace more states.

- touchstart_expected_soon
- loading_tasks_seems_expensive
- timer_tasks_seems_expensive

Bug:  765660 
Change-Id: I75cf6681410b14b1f378024bd0c568d261ecd3f7
Reviewed-on: https://chromium-review.googlesource.com/698325
Reviewed-by: Alexander Timin <altimin@chromium.org>
Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506365}
[modify] https://crrev.com/865500eac2a8420d1efc5f8768a9249bd86f10f3/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/865500eac2a8420d1efc5f8768a9249bd86f10f3/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.h

Project Member

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

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

commit 6de0faf8a14ad0cdcda169e825002b5e525d9881
Author: Greg Kraynov <kraynov@chromium.org>
Date: Thu Oct 12 14:04:12 2017

Blink Scheduler: Merge tracing helpers.

Bug:  765660 
Change-Id: I4f1136b91b9fd4f6bc6ae3724733cb01a81b3365
Reviewed-on: https://chromium-review.googlesource.com/713314
Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
Reviewed-by: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508343}
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/BUILD.gn
[delete] https://crrev.com/1ea7b9cd39e000735df1e2ad61650bdd7ca3b3d0/third_party/WebKit/Source/platform/scheduler/base/trace_helper.cc
[delete] https://crrev.com/1ea7b9cd39e000735df1e2ad61650bdd7ca3b3d0/third_party/WebKit/Source/platform/scheduler/base/trace_helper.h
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/renderer/cpu_time_budget_pool.cc
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/renderer/wake_up_budget_pool.cc
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/renderer/web_frame_scheduler_impl.cc
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/renderer/web_view_scheduler_impl.cc
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.cc
[modify] https://crrev.com/6de0faf8a14ad0cdcda169e825002b5e525d9881/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h

Project Member

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

Project Member

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

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

commit ede5f9a514c1a528deaca561c4059c50403cc981
Author: Greg Kraynov <kraynov@chromium.org>
Date: Mon Oct 23 14:31:20 2017

Blink Scheduler: Fix TraceableState constructor.

Tracing might be already enabled when we construct a
TraceableState. Missing event in that case has been fixed.

Bug:  765660 
Change-Id: I6b2aae0b9ca4bcfaf79a6f5f56c703ae79ff2364
Reviewed-on: https://chromium-review.googlesource.com/732662
Reviewed-by: Sami Kyöstilä <skyostil@chromium.org>
Commit-Queue: Grigoriy Kraynov <kraynov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510786}
[modify] https://crrev.com/ede5f9a514c1a528deaca561c4059c50403cc981/third_party/WebKit/Source/platform/scheduler/util/tracing_helper.h

Blockedon: 780473
Status: Fixed (was: Started)
Closing this tracker bug, continue our efforts in  https://crbug.com/780473 

Sign in to add a comment