Commit 9c6fb254 authored by Alexander Timin's avatar Alexander Timin Committed by Commit Bot

[scheduler] Add TaskDurationPerTaskType.{Foreground,Background} histograms.

Add new histograms to capture per-task-type task duration for different
renderer visibility states separately.

BUG=820494
R=rkaplow@chromium.org
CC=panicker@chromium.org

Change-Id: Icce8e262cc87a4d3f73809abdbcda34a124a1bb9
Reviewed-on: https://chromium-review.googlesource.com/955855Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Commit-Queue: Alexander Timin <altimin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542222}
parent 1c2b70ba
...@@ -96,6 +96,10 @@ RendererMetricsHelper::RendererMetricsHelper( ...@@ -96,6 +96,10 @@ RendererMetricsHelper::RendererMetricsHelper(
DURATION_PER_QUEUE_TYPE_METRIC_NAME ".HiddenMusic"), DURATION_PER_QUEUE_TYPE_METRIC_NAME ".HiddenMusic"),
per_frame_status_duration_reporter(DURATION_PER_FRAME_TYPE_METRIC_NAME), per_frame_status_duration_reporter(DURATION_PER_FRAME_TYPE_METRIC_NAME),
per_task_type_duration_reporter(DURATION_PER_TASK_TYPE_METRIC_NAME), per_task_type_duration_reporter(DURATION_PER_TASK_TYPE_METRIC_NAME),
foreground_per_task_type_duration_reporter(
DURATION_PER_TASK_TYPE_METRIC_NAME ".Foreground"),
background_per_task_type_duration_reporter(
DURATION_PER_TASK_TYPE_METRIC_NAME ".Background"),
main_thread_task_load_state(MainThreadTaskLoadState::kUnknown) { main_thread_task_load_state(MainThreadTaskLoadState::kUnknown) {
main_thread_load_tracker.Resume(now); main_thread_load_tracker.Resume(now);
if (renderer_backgrounded) { if (renderer_backgrounded) {
...@@ -230,6 +234,9 @@ void RendererMetricsHelper::RecordTaskMetrics( ...@@ -230,6 +234,9 @@ void RendererMetricsHelper::RecordTaskMetrics(
per_queue_type_task_duration_reporter.RecordTask(queue_type, duration); per_queue_type_task_duration_reporter.RecordTask(queue_type, duration);
TaskType task_type = static_cast<TaskType>(task.task_type());
per_task_type_duration_reporter.RecordTask(task_type, duration);
if (renderer_scheduler_->main_thread_only().renderer_backgrounded) { if (renderer_scheduler_->main_thread_only().renderer_backgrounded) {
background_per_queue_type_task_duration_reporter.RecordTask(queue_type, background_per_queue_type_task_duration_reporter.RecordTask(queue_type,
duration); duration);
...@@ -276,6 +283,8 @@ void RendererMetricsHelper::RecordTaskMetrics( ...@@ -276,6 +283,8 @@ void RendererMetricsHelper::RecordTaskMetrics(
backgrounded_at + base::TimeDelta::FromMinutes(5), backgrounded_at + base::TimeDelta::FromMinutes(5),
std::max(backgrounded_at + base::TimeDelta::FromMinutes(5), std::max(backgrounded_at + base::TimeDelta::FromMinutes(5),
end_time))); end_time)));
background_per_task_type_duration_reporter.RecordTask(task_type, duration);
} else { } else {
foreground_per_queue_type_task_duration_reporter.RecordTask(queue_type, foreground_per_queue_type_task_duration_reporter.RecordTask(queue_type,
duration); duration);
...@@ -310,6 +319,8 @@ void RendererMetricsHelper::RecordTaskMetrics( ...@@ -310,6 +319,8 @@ void RendererMetricsHelper::RecordTaskMetrics(
foregrounded_at + base::TimeDelta::FromMinutes(3), foregrounded_at + base::TimeDelta::FromMinutes(3),
std::max(foregrounded_at + base::TimeDelta::FromMinutes(3), std::max(foregrounded_at + base::TimeDelta::FromMinutes(3),
end_time))); end_time)));
foreground_per_task_type_duration_reporter.RecordTask(task_type, duration);
} }
if (renderer_scheduler_->main_thread_only().renderer_hidden) { if (renderer_scheduler_->main_thread_only().renderer_hidden) {
...@@ -354,9 +365,6 @@ void RendererMetricsHelper::RecordTaskMetrics( ...@@ -354,9 +365,6 @@ void RendererMetricsHelper::RecordTaskMetrics(
UMA_HISTOGRAM_ENUMERATION(COUNT_PER_FRAME_METRIC_NAME ".LongerThan1s", UMA_HISTOGRAM_ENUMERATION(COUNT_PER_FRAME_METRIC_NAME ".LongerThan1s",
frame_status, FrameStatus::kCount); frame_status, FrameStatus::kCount);
} }
per_task_type_duration_reporter.RecordTask(
static_cast<TaskType>(task.task_type()), duration);
} }
void RendererMetricsHelper::RecordMainThreadTaskLoad(base::TimeTicks time, void RendererMetricsHelper::RecordMainThreadTaskLoad(base::TimeTicks time,
......
...@@ -119,6 +119,10 @@ class PLATFORM_EXPORT RendererMetricsHelper : public MetricsHelper { ...@@ -119,6 +119,10 @@ class PLATFORM_EXPORT RendererMetricsHelper : public MetricsHelper {
using TaskDurationPerTaskTypeMetricReporter = using TaskDurationPerTaskTypeMetricReporter =
TaskDurationMetricReporter<TaskType>; TaskDurationMetricReporter<TaskType>;
TaskDurationPerTaskTypeMetricReporter per_task_type_duration_reporter; TaskDurationPerTaskTypeMetricReporter per_task_type_duration_reporter;
TaskDurationPerTaskTypeMetricReporter
foreground_per_task_type_duration_reporter;
TaskDurationPerTaskTypeMetricReporter
background_per_task_type_duration_reporter;
MainThreadTaskLoadState main_thread_task_load_state; MainThreadTaskLoadState main_thread_task_load_state;
......
...@@ -112719,6 +112719,7 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries. ...@@ -112719,6 +112719,7 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<suffix name="Background"/> <suffix name="Background"/>
<suffix name="Foreground"/> <suffix name="Foreground"/>
<affected-histogram name="RendererScheduler.TaskCPUDurationPerThreadType"/> <affected-histogram name="RendererScheduler.TaskCPUDurationPerThreadType"/>
<affected-histogram name="RendererScheduler.TaskDurationPerTaskType"/>
<affected-histogram name="RendererScheduler.TaskDurationPerThreadType"/> <affected-histogram name="RendererScheduler.TaskDurationPerThreadType"/>
</histogram_suffixes> </histogram_suffixes>
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