Chromium Code Reviews| Index: components/scheduler/renderer/renderer_scheduler_impl.cc |
| diff --git a/components/scheduler/renderer/renderer_scheduler_impl.cc b/components/scheduler/renderer/renderer_scheduler_impl.cc |
| index 9f3d9b6ef21a16711e52ff193531d3459aed5064..fdc0a29035725ceb73cd374b6e943b59fe47a961 100644 |
| --- a/components/scheduler/renderer/renderer_scheduler_impl.cc |
| +++ b/components/scheduler/renderer/renderer_scheduler_impl.cc |
| @@ -7,6 +7,7 @@ |
| #include "base/bind.h" |
| #include "base/debug/stack_trace.h" |
| #include "base/logging.h" |
| +#include "base/metrics/histogram_macros.h" |
| #include "base/trace_event/trace_event.h" |
| #include "base/trace_event/trace_event_argument.h" |
| #include "cc/output/begin_frame_args.h" |
| @@ -45,14 +46,14 @@ RendererSchedulerImpl::RendererSchedulerImpl( |
| base::TimeDelta()), |
| render_widget_scheduler_signals_(this), |
| control_task_runner_(helper_.ControlTaskRunner()), |
| - compositor_task_runner_( |
| - helper_.NewTaskQueue(TaskQueue::Spec("compositor_tq") |
| - .SetShouldMonitorQuiescence(true))), |
| + compositor_task_runner_(helper_.NewTaskQueue( |
| + TaskQueue::Spec("compositor_tq").SetShouldMonitorQuiescence(true))), |
| delayed_update_policy_runner_( |
| base::Bind(&RendererSchedulerImpl::UpdatePolicy, |
| base::Unretained(this)), |
| helper_.ControlTaskRunner()), |
| - main_thread_only_(compositor_task_runner_, |
| + main_thread_only_(this, |
| + compositor_task_runner_, |
| helper_.scheduler_tqm_delegate().get()), |
| policy_may_need_update_(&any_thread_lock_), |
| weak_factory_(this) { |
| @@ -74,6 +75,7 @@ RendererSchedulerImpl::RendererSchedulerImpl( |
| this); |
| helper_.SetObserver(this); |
| + AddTaskObserver(&MainThreadOnly().queueing_time_estimator); |
|
Sami
2016/04/20 09:51:27
Please also remove this in the destructor.
tdresser
2016/04/20 15:13:33
Whoops, thanks!
|
| } |
| RendererSchedulerImpl::~RendererSchedulerImpl() { |
| @@ -97,6 +99,7 @@ RendererSchedulerImpl::~RendererSchedulerImpl() { |
| } |
| RendererSchedulerImpl::MainThreadOnly::MainThreadOnly( |
| + RendererSchedulerImpl* renderer_scheduler_impl, |
| const scoped_refptr<TaskQueue>& compositor_task_runner, |
| base::TickClock* time_source) |
| : loading_task_cost_estimator(time_source, |
| @@ -109,6 +112,9 @@ RendererSchedulerImpl::MainThreadOnly::MainThreadOnly( |
| time_source, |
| kShortIdlePeriodDurationSampleCount, |
| kShortIdlePeriodDurationPercentile), |
| + queueing_time_estimator(renderer_scheduler_impl, |
| + time_source, |
| + base::TimeDelta::FromSeconds(5)), |
| current_use_case(UseCase::NONE), |
| timer_queue_suspend_count(0), |
| navigation_task_expected_count(0), |
| @@ -1250,4 +1256,10 @@ void RendererSchedulerImpl::OnTriedToExecuteBlockedTask( |
| } |
| } |
| +void RendererSchedulerImpl::OnQueueingTimeForWindowEstimated( |
| + base::TimeDelta queueing_time) { |
| + UMA_HISTOGRAM_TIMES("RendererScheduler.ExpectedTaskQueueingDuration", |
|
Sami
2016/04/20 09:51:27
Would you mind adding a trace counter[1] for this
tdresser
2016/04/20 15:13:33
Done.
|
| + queueing_time); |
| +} |
| + |
| } // namespace scheduler |