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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/child/worker_scheduler_impl.cc

Issue 2806623004: Worker: Introduce per-global-scope task scheduler (Closed)
Patch Set: remove unused header Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/scheduler/child/worker_scheduler_impl.h" 5 #include "platform/scheduler/child/worker_scheduler_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "base/trace_event/trace_event.h" 9 #include "base/trace_event/trace_event.h"
10 #include "base/trace_event/trace_event_argument.h" 10 #include "base/trace_event/trace_event_argument.h"
11 #include "platform/Histogram.h"
11 #include "platform/scheduler/base/time_converter.h" 12 #include "platform/scheduler/base/time_converter.h"
12 #include "platform/scheduler/child/scheduler_tqm_delegate.h" 13 #include "platform/scheduler/child/scheduler_tqm_delegate.h"
13 #include "public/platform/scheduler/base/task_queue.h" 14 #include "public/platform/scheduler/base/task_queue.h"
14 15
15 namespace blink { 16 namespace blink {
16 namespace scheduler { 17 namespace scheduler {
17 18
18 namespace { 19 namespace {
19 // Workers could be short-lived, set a shorter interval than 20 // Workers could be short-lived, set a shorter interval than
20 // the renderer thread. 21 // the renderer thread.
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 114
114 // The lifetime could be radically different for different workers, 115 // The lifetime could be radically different for different workers,
115 // some workers could be short-lived (but last at least 1 sec in 116 // some workers could be short-lived (but last at least 1 sec in
116 // Service Workers case) or could be around as long as the tab is open. 117 // Service Workers case) or could be around as long as the tab is open.
117 UMA_HISTOGRAM_CUSTOM_TIMES( 118 UMA_HISTOGRAM_CUSTOM_TIMES(
118 "WorkerThread.Runtime", delta, base::TimeDelta::FromSeconds(1), 119 "WorkerThread.Runtime", delta, base::TimeDelta::FromSeconds(1),
119 base::TimeDelta::FromDays(1), 50 /* bucket count */); 120 base::TimeDelta::FromDays(1), 50 /* bucket count */);
120 helper_.Shutdown(); 121 helper_.Shutdown();
121 } 122 }
122 123
124 scoped_refptr<TaskQueue> WorkerSchedulerImpl::NewUnthrottledTaskRunner(
125 TaskQueue::QueueType queue_type) {
126 helper_.CheckOnValidThread();
127 scoped_refptr<TaskQueue> unthrottled_task_queue(
128 helper_.NewTaskQueue(TaskQueue::Spec(queue_type)
129 .SetShouldMonitorQuiescence(true)
130 .SetTimeDomain(nullptr)));
131 return unthrottled_task_queue;
132 }
133
123 SchedulerHelper* WorkerSchedulerImpl::GetSchedulerHelperForTesting() { 134 SchedulerHelper* WorkerSchedulerImpl::GetSchedulerHelperForTesting() {
124 return &helper_; 135 return &helper_;
125 } 136 }
126 137
127 bool WorkerSchedulerImpl::CanEnterLongIdlePeriod(base::TimeTicks, 138 bool WorkerSchedulerImpl::CanEnterLongIdlePeriod(base::TimeTicks,
128 base::TimeDelta*) { 139 base::TimeDelta*) {
129 return true; 140 return true;
130 } 141 }
131 142
132 base::TimeTicks WorkerSchedulerImpl::CurrentIdleTaskDeadlineForTesting() const { 143 base::TimeTicks WorkerSchedulerImpl::CurrentIdleTaskDeadlineForTesting() const {
133 return idle_helper_.CurrentIdleTaskDeadline(); 144 return idle_helper_.CurrentIdleTaskDeadline();
134 } 145 }
135 146
136 void WorkerSchedulerImpl::WillProcessTask(TaskQueue* task_queue, 147 void WorkerSchedulerImpl::WillProcessTask(TaskQueue* task_queue,
137 double start_time) {} 148 double start_time) {}
138 149
139 void WorkerSchedulerImpl::DidProcessTask(TaskQueue* task_queue, 150 void WorkerSchedulerImpl::DidProcessTask(TaskQueue* task_queue,
140 double start_time, 151 double start_time,
141 double end_time) { 152 double end_time) {
153 DEFINE_THREAD_SAFE_STATIC_LOCAL(
154 CustomCountHistogram, task_time_counter,
155 new CustomCountHistogram("WorkerThread.Task.Time", 0, 10000000, 50));
156 task_time_counter.Count((end_time - start_time) *
157 base::Time::kMicrosecondsPerSecond);
158
142 base::TimeTicks start_time_ticks = 159 base::TimeTicks start_time_ticks =
143 MonotonicTimeInSecondsToTimeTicks(start_time); 160 MonotonicTimeInSecondsToTimeTicks(start_time);
144 base::TimeTicks end_time_ticks = MonotonicTimeInSecondsToTimeTicks(end_time); 161 base::TimeTicks end_time_ticks = MonotonicTimeInSecondsToTimeTicks(end_time);
145 162
146 load_tracker_.RecordTaskTime(start_time_ticks, end_time_ticks); 163 load_tracker_.RecordTaskTime(start_time_ticks, end_time_ticks);
147 } 164 }
148 165
149 void WorkerSchedulerImpl::OnBeginNestedMessageLoop() {} 166 void WorkerSchedulerImpl::OnBeginNestedMessageLoop() {}
150 167
151 } // namespace scheduler 168 } // namespace scheduler
152 } // namespace blink 169 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698