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

Unified Diff: content/renderer/scheduler/task_queue_manager.cc

Issue 954833005: scheduler: Trace queue size at post time (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/scheduler/task_queue_manager.cc
diff --git a/content/renderer/scheduler/task_queue_manager.cc b/content/renderer/scheduler/task_queue_manager.cc
index 90f89fe3b0eaf2f564eeeed3df3f2f3917a289b4..d66a9306e26246b781f6fe3e6b324e70f7392c4f 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) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698