summaryrefslogtreecommitdiff
path: root/base/message_loop/incoming_task_queue.cc
diff options
context:
space:
mode:
authorGabriel Charette <gab@chromium.org>2018-06-09 14:45:34 +0900
committerQijiang Fan <fqj@google.com>2020-06-05 09:38:20 +0900
commit7089697fb53fa61fe7bd7e1b96c6e6991341dd93 (patch)
treebcb9457dba378413dc540a9dc229e03777fc0bfd /base/message_loop/incoming_task_queue.cc
parentedddfa6b735c0cb4e86127544347a02beb827fd5 (diff)
downloadlibchrome-7089697fb53fa61fe7bd7e1b96c6e6991341dd93.tar.gz
[MessageLoop] Add metrics to diagnose delayed task queue issues.
TBR=fdoray@chromium.org Bug: 850450, 786597 Change-Id: Iaa8a9d713c5202f371b0fd549d140bbe791e4089 Reviewed-on: https://chromium-review.googlesource.com/1094296 Commit-Queue: Gabriel Charette <gab@chromium.org> Reviewed-by: Gabriel Charette <gab@chromium.org> Cr-Commit-Position: refs/heads/master@{#565867} CrOS-Libchrome-Original-Commit: a6b3d9d7242e5625cf85e51892591bc6597c9387
Diffstat (limited to 'base/message_loop/incoming_task_queue.cc')
-rw-r--r--base/message_loop/incoming_task_queue.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/base/message_loop/incoming_task_queue.cc b/base/message_loop/incoming_task_queue.cc
index d6f4d640bf..83800d1675 100644
--- a/base/message_loop/incoming_task_queue.cc
+++ b/base/message_loop/incoming_task_queue.cc
@@ -11,6 +11,7 @@
#include "base/callback_helpers.h"
#include "base/location.h"
#include "base/message_loop/message_loop.h"
+#include "base/metrics/histogram_macros.h"
#include "base/synchronization/waitable_event.h"
#include "base/time/time.h"
#include "build/build_config.h"
@@ -84,6 +85,10 @@ bool IncomingTaskQueue::AddToIncomingQueue(const Location& from_here,
pending_task.is_high_res = true;
}
#endif
+
+ if (!delay.is_zero())
+ UMA_HISTOGRAM_LONG_TIMES("MessageLoop.DelayedTaskQueue.PostedDelay", delay);
+
return PostPendingTask(&pending_task);
}
@@ -126,6 +131,12 @@ void IncomingTaskQueue::RunTask(PendingTask* pending_task) {
task_annotator_.RunTask("MessageLoop::PostTask", pending_task);
}
+void IncomingTaskQueue::ReportMetricsOnIdle() const {
+ UMA_HISTOGRAM_COUNTS_1M(
+ "MessageLoop.DelayedTaskQueue.PendingTasksCountOnIdle",
+ delayed_tasks_.Size());
+}
+
IncomingTaskQueue::TriageQueue::TriageQueue(IncomingTaskQueue* outer)
: outer_(outer) {}
@@ -250,6 +261,11 @@ void IncomingTaskQueue::DelayedQueue::Clear() {
Pop();
}
+size_t IncomingTaskQueue::DelayedQueue::Size() const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(outer_->sequence_checker_);
+ return queue_.size();
+}
+
IncomingTaskQueue::DeferredQueue::DeferredQueue(IncomingTaskQueue* outer)
: outer_(outer) {}