diff options
author | skyostil <skyostil@chromium.org> | 2015-02-25 05:46:42 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-02-25 13:47:34 +0000 |
commit | 294c455b12087569af1d3a8b94c95e3ae80ad718 (patch) | |
tree | b551f916c2957d6e6a79f46296b0df862b09bdc4 /content/renderer/scheduler | |
parent | bb9a196b882764b9984ae1b924683361fb00ea09 (diff) | |
download | chromium_src-294c455b12087569af1d3a8b94c95e3ae80ad718.zip chromium_src-294c455b12087569af1d3a8b94c95e3ae80ad718.tar.gz chromium_src-294c455b12087569af1d3a8b94c95e3ae80ad718.tar.bz2 |
scheduler: Trace queue size at post time
Trace the task queue size when a task gets posted into it in addition
to when we reload the work queue. This makes it easier to see when
tasks are posted from a trace.
Review URL: https://codereview.chromium.org/954833005
Cr-Commit-Position: refs/heads/master@{#318038}
Diffstat (limited to 'content/renderer/scheduler')
-rw-r--r-- | content/renderer/scheduler/task_queue_manager.cc | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/content/renderer/scheduler/task_queue_manager.cc b/content/renderer/scheduler/task_queue_manager.cc index 90f89fe..d66a930 100644 --- a/content/renderer/scheduler/task_queue_manager.cc +++ b/content/renderer/scheduler/task_queue_manager.cc @@ -77,7 +77,7 @@ class TaskQueue : public base::SingleThreadTaskRunner { TaskQueueManager::WorkQueueUpdateEventType event_type); void EnqueueTaskLocked(const base::PendingTask& pending_task); - void TraceWorkQueueSize() const; + void TraceQueueSize(bool is_locked) const; static const char* PumpPolicyToString( TaskQueueManager::PumpPolicy pump_policy); static void QueueAsValueInto(const base::TaskQueue& queue, @@ -181,7 +181,7 @@ bool TaskQueue::UpdateWorkQueue( if (!ShouldAutoPumpQueueLocked(event_type)) return false; work_queue_.Swap(&incoming_queue_); - TraceWorkQueueSize(); + TraceQueueSize(true); return true; } } @@ -189,15 +189,24 @@ bool TaskQueue::UpdateWorkQueue( base::PendingTask TaskQueue::TakeTaskFromWorkQueue() { base::PendingTask pending_task = work_queue_.front(); work_queue_.pop(); - TraceWorkQueueSize(); + TraceQueueSize(false); return pending_task; } -void TaskQueue::TraceWorkQueueSize() const { - if (!name_) +void TaskQueue::TraceQueueSize(bool is_locked) const { + bool is_tracing; + TRACE_EVENT_CATEGORY_GROUP_ENABLED( + TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), &is_tracing); + if (!is_tracing || !name_) return; + if (!is_locked) + lock_.Acquire(); + else + lock_.AssertAcquired(); TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"), name_, - work_queue_.size()); + incoming_queue_.size() + work_queue_.size()); + if (!is_locked) + lock_.Release(); } void TaskQueue::EnqueueTask(const base::PendingTask& pending_task) { @@ -224,6 +233,7 @@ void TaskQueue::EnqueueTaskLocked(const base::PendingTask& pending_task) { // before getting here. incoming_queue_.back().delayed_run_time = base::TimeTicks(); } + TraceQueueSize(true); } void TaskQueue::SetPumpPolicy(TaskQueueManager::PumpPolicy pump_policy) { |