Commit 1c0135f2 authored by Francois Doray's avatar Francois Doray Committed by Commit Bot

[threadpool] Remove ThreadPool.NumTasksRunWhileQueuing histogram.

Historical histogram data is already available in
base/task/thread_pool/historical_histogram_data.md

Bug: 995483
Change-Id: I9c7898627dcd75dc6ffb1bb9b64d60f6a52a21a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2446206Reviewed-by: default avatarEtienne Pierre-Doray <etiennep@chromium.org>
Reviewed-by: default avatarSteven Holte <holte@chromium.org>
Commit-Queue: Steven Holte <holte@chromium.org>
Auto-Submit: François Doray <fdoray@chromium.org>
Cr-Commit-Position: refs/heads/master@{#814942}
parent 47c7aa5e
...@@ -81,10 +81,8 @@ void ServiceThread::PerformHeartbeatLatencyReport() const { ...@@ -81,10 +81,8 @@ void ServiceThread::PerformHeartbeatLatencyReport() const {
// reported latency. // reported latency.
ThreadPool::PostTask( ThreadPool::PostTask(
FROM_HERE, {profiled_priority}, FROM_HERE, {profiled_priority},
BindOnce( BindOnce(&TaskTracker::RecordHeartbeatLatencyHistogram,
&TaskTracker::RecordHeartbeatLatencyAndTasksRunWhileQueuingHistograms, Unretained(task_tracker_), profiled_priority, TimeTicks::Now()));
Unretained(task_tracker_), profiled_priority, TimeTicks::Now(),
task_tracker_->GetNumTasksRun()));
} }
} // namespace internal } // namespace internal
......
...@@ -102,27 +102,6 @@ HistogramBase* GetLatencyHistogram(StringPiece histogram_name, ...@@ -102,27 +102,6 @@ HistogramBase* GetLatencyHistogram(StringPiece histogram_name,
HistogramBase::kUmaTargetedHistogramFlag); HistogramBase::kUmaTargetedHistogramFlag);
} }
// Constructs a histogram to track task count which is logging to
// "ThreadPool.{histogram_name}.{histogram_label}.{task_type_suffix}".
HistogramBase* GetCountHistogram(StringPiece histogram_name,
StringPiece histogram_label,
StringPiece task_type_suffix) {
DCHECK(!histogram_name.empty());
DCHECK(!task_type_suffix.empty());
if (histogram_label.empty())
return nullptr;
// Mimics the UMA_HISTOGRAM_CUSTOM_COUNTS macro.
const std::string histogram = JoinString(
{"ThreadPool", histogram_name, histogram_label, task_type_suffix}, ".");
// 500 was chosen as the maximum number of tasks run while queuing because
// values this high would likely indicate an error, beyond which knowing the
// actual number of tasks is not informative.
return Histogram::FactoryGet(histogram, 1, 500, 50,
HistogramBase::kUmaTargetedHistogramFlag);
}
// Returns a histogram stored in an array indexed by task priority. // Returns a histogram stored in an array indexed by task priority.
// TODO(jessemckenna): use the STATIC_HISTOGRAM_POINTER_GROUP macro from // TODO(jessemckenna): use the STATIC_HISTOGRAM_POINTER_GROUP macro from
// histogram_macros.h instead. // histogram_macros.h instead.
...@@ -336,16 +315,6 @@ TaskTracker::TaskTracker(StringPiece histogram_label) ...@@ -336,16 +315,6 @@ TaskTracker::TaskTracker(StringPiece histogram_label)
GetLatencyHistogram("HeartbeatLatencyMicroseconds", GetLatencyHistogram("HeartbeatLatencyMicroseconds",
histogram_label, histogram_label,
"UserBlockingTaskPriority")}, "UserBlockingTaskPriority")},
num_tasks_run_while_queuing_histograms_{
GetCountHistogram("NumTasksRunWhileQueuing",
histogram_label,
"BackgroundTaskPriority"),
GetCountHistogram("NumTasksRunWhileQueuing",
histogram_label,
"UserVisibleTaskPriority"),
GetCountHistogram("NumTasksRunWhileQueuing",
histogram_label,
"UserBlockingTaskPriority")},
tracked_ref_factory_(this) {} tracked_ref_factory_(this) {}
TaskTracker::~TaskTracker() = default; TaskTracker::~TaskTracker() = default;
...@@ -532,27 +501,14 @@ void TaskTracker::RecordLatencyHistogram(TaskPriority priority, ...@@ -532,27 +501,14 @@ void TaskTracker::RecordLatencyHistogram(TaskPriority priority,
->AddTimeMicrosecondsGranularity(task_latency); ->AddTimeMicrosecondsGranularity(task_latency);
} }
void TaskTracker::RecordHeartbeatLatencyAndTasksRunWhileQueuingHistograms( void TaskTracker::RecordHeartbeatLatencyHistogram(TaskPriority priority,
TaskPriority priority, TimeTicks posted_time) const {
TimeTicks posted_time,
int num_tasks_run_when_posted) const {
if (histogram_label_.empty()) if (histogram_label_.empty())
return; return;
const TimeDelta task_latency = TimeTicks::Now() - posted_time; const TimeDelta task_latency = TimeTicks::Now() - posted_time;
GetHistogramForTaskPriority(priority, heartbeat_latency_histograms_) GetHistogramForTaskPriority(priority, heartbeat_latency_histograms_)
->AddTimeMicrosecondsGranularity(task_latency); ->AddTimeMicrosecondsGranularity(task_latency);
GetHistogramForTaskPriority(priority, num_tasks_run_while_queuing_histograms_)
->Add(GetNumTasksRun() - num_tasks_run_when_posted);
}
int TaskTracker::GetNumTasksRun() const {
return num_tasks_run_.load(std::memory_order_relaxed);
}
void TaskTracker::IncrementNumTasksRun() {
num_tasks_run_.fetch_add(1, std::memory_order_relaxed);
} }
void TaskTracker::RunTask(Task task, void TaskTracker::RunTask(Task task,
...@@ -709,7 +665,6 @@ bool TaskTracker::BeforeRunTask(TaskShutdownBehavior shutdown_behavior) { ...@@ -709,7 +665,6 @@ bool TaskTracker::BeforeRunTask(TaskShutdownBehavior shutdown_behavior) {
} }
void TaskTracker::AfterRunTask(TaskShutdownBehavior shutdown_behavior) { void TaskTracker::AfterRunTask(TaskShutdownBehavior shutdown_behavior) {
IncrementNumTasksRun();
if (shutdown_behavior == TaskShutdownBehavior::SKIP_ON_SHUTDOWN) { if (shutdown_behavior == TaskShutdownBehavior::SKIP_ON_SHUTDOWN) {
DecrementNumItemsBlockingShutdown(); DecrementNumItemsBlockingShutdown();
} }
......
...@@ -130,20 +130,12 @@ class BASE_EXPORT TaskTracker { ...@@ -130,20 +130,12 @@ class BASE_EXPORT TaskTracker {
// no tasks are blocking shutdown). // no tasks are blocking shutdown).
bool IsShutdownComplete() const; bool IsShutdownComplete() const;
// Records two histograms // Records Now() - posted_time to
// 1. ThreadPool.[label].HeartbeatLatencyMicroseconds.[suffix]: // ThreadPool.[label].HeartbeatLatencyMicroseconds.[suffix].
// Now() - posted_time
// 2. ThreadPool.[label].NumTasksRunWhileQueuing.[suffix]:
// GetNumTasksRun() - num_tasks_run_when_posted.
// [label] is the histogram label provided to the constructor. // [label] is the histogram label provided to the constructor.
// [suffix] is derived from |task_priority|. // [suffix] is derived from |task_priority|.
void RecordHeartbeatLatencyAndTasksRunWhileQueuingHistograms( void RecordHeartbeatLatencyHistogram(TaskPriority task_priority,
TaskPriority task_priority, TimeTicks posted_time) const;
TimeTicks posted_time,
int num_tasks_run_when_posted) const;
// Returns the number of tasks run so far
int GetNumTasksRun() const;
TrackedRef<TaskTracker> GetTrackedRef() { TrackedRef<TaskTracker> GetTrackedRef() {
return tracked_ref_factory_.GetTrackedRef(); return tracked_ref_factory_.GetTrackedRef();
...@@ -206,8 +198,6 @@ class BASE_EXPORT TaskTracker { ...@@ -206,8 +198,6 @@ class BASE_EXPORT TaskTracker {
void RecordLatencyHistogram(TaskPriority priority, void RecordLatencyHistogram(TaskPriority priority,
TimeTicks posted_time) const; TimeTicks posted_time) const;
void IncrementNumTasksRun();
// Dummy frames to allow identification of shutdown behavior in a stack trace. // Dummy frames to allow identification of shutdown behavior in a stack trace.
void RunContinueOnShutdown(Task* task); void RunContinueOnShutdown(Task* task);
void RunSkipOnShutdown(Task* task); void RunSkipOnShutdown(Task* task);
...@@ -263,10 +253,6 @@ class BASE_EXPORT TaskTracker { ...@@ -263,10 +253,6 @@ class BASE_EXPORT TaskTracker {
// completes. // completes.
std::unique_ptr<WaitableEvent> shutdown_event_ GUARDED_BY(shutdown_lock_); std::unique_ptr<WaitableEvent> shutdown_event_ GUARDED_BY(shutdown_lock_);
// Counter for number of tasks run so far, used to record tasks run while
// a task queued to histogram.
std::atomic_int num_tasks_run_{0};
// ThreadPool.TaskLatencyMicroseconds.*, // ThreadPool.TaskLatencyMicroseconds.*,
// ThreadPool.HeartbeatLatencyMicroseconds.*, and // ThreadPool.HeartbeatLatencyMicroseconds.*, and
// ThreadPool.NumTasksRunWhileQueuing.* histograms. The index is a // ThreadPool.NumTasksRunWhileQueuing.* histograms. The index is a
...@@ -278,8 +264,6 @@ class BASE_EXPORT TaskTracker { ...@@ -278,8 +264,6 @@ class BASE_EXPORT TaskTracker {
static_cast<TaskPriorityType>(TaskPriority::HIGHEST) + 1; static_cast<TaskPriorityType>(TaskPriority::HIGHEST) + 1;
HistogramBase* const task_latency_histograms_[kNumTaskPriorities]; HistogramBase* const task_latency_histograms_[kNumTaskPriorities];
HistogramBase* const heartbeat_latency_histograms_[kNumTaskPriorities]; HistogramBase* const heartbeat_latency_histograms_[kNumTaskPriorities];
HistogramBase* const
num_tasks_run_while_queuing_histograms_[kNumTaskPriorities];
// Ensures all state (e.g. dangling cleaned up workers) is coalesced before // Ensures all state (e.g. dangling cleaned up workers) is coalesced before
// destroying the TaskTracker (e.g. in test environments). // destroying the TaskTracker (e.g. in test environments).
......
...@@ -14818,6 +14818,9 @@ should be kept until we remove incident reporting. --> ...@@ -14818,6 +14818,9 @@ should be kept until we remove incident reporting. -->
<histogram base="true" name="ThreadPool.NumTasksRunWhileQueuing" units="tasks" <histogram base="true" name="ThreadPool.NumTasksRunWhileQueuing" units="tasks"
expires_after="2019-10-01"> expires_after="2019-10-01">
<obsolete>
Removed 10/2020. Not actively used.
</obsolete>
<owner>fdoray@chromium.org</owner> <owner>fdoray@chromium.org</owner>
<summary> <summary>
Number of tasks run by ThreadPool while task was queuing (from time task was Number of tasks run by ThreadPool while task was queuing (from time task was
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment