Commit a55ace97 authored by Farah Charab's avatar Farah Charab Committed by Commit Bot

Scheduler: Add per task type duration metric split by use case: None, Loading and Input Handling.

Add RendererScheduler.TaskDurationPerTaskType.UseCase histogram to record time
we spend running tasks of different task types split per RendererScheduler's UseCase.

Change-Id: Icd53e095f5cbbddb5419207b2b5767aa2f09bf62
Reviewed-on: https://chromium-review.googlesource.com/968511Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Commit-Queue: Farah Charab <farahcharab@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544200}
parent 5f46dab1
...@@ -98,6 +98,12 @@ RendererMetricsHelper::RendererMetricsHelper( ...@@ -98,6 +98,12 @@ 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),
no_use_case_per_task_type_duration_reporter_(
DURATION_PER_TASK_TYPE_METRIC_NAME ".UseCaseNone"),
loading_per_task_type_duration_reporter_(
DURATION_PER_TASK_TYPE_METRIC_NAME ".UseCaseLoading"),
input_handling_per_task_type_duration_reporter_(
DURATION_PER_TASK_TYPE_METRIC_NAME ".UseCaseInputHandling"),
foreground_per_task_type_duration_reporter_( foreground_per_task_type_duration_reporter_(
DURATION_PER_TASK_TYPE_METRIC_NAME ".Foreground"), DURATION_PER_TASK_TYPE_METRIC_NAME ".Foreground"),
background_per_task_type_duration_reporter_( background_per_task_type_duration_reporter_(
...@@ -369,8 +375,17 @@ void RendererMetricsHelper::RecordTaskMetrics( ...@@ -369,8 +375,17 @@ void RendererMetricsHelper::RecordTaskMetrics(
frame_status, FrameStatus::kCount); frame_status, FrameStatus::kCount);
} }
per_task_use_case_duration_reporter_.RecordTask( UseCase use_case = renderer_scheduler_->main_thread_only().current_use_case;
renderer_scheduler_->main_thread_only().current_use_case, duration); per_task_use_case_duration_reporter_.RecordTask(use_case, duration);
if (use_case == UseCase::kNone) {
no_use_case_per_task_type_duration_reporter_.RecordTask(task_type,
duration);
} else if (use_case == UseCase::kLoading) {
loading_per_task_type_duration_reporter_.RecordTask(task_type, duration);
} else {
input_handling_per_task_type_duration_reporter_.RecordTask(task_type,
duration);
}
} }
void RendererMetricsHelper::RecordMainThreadTaskLoad(base::TimeTicks time, void RendererMetricsHelper::RecordMainThreadTaskLoad(base::TimeTicks time,
......
...@@ -121,6 +121,18 @@ class PLATFORM_EXPORT RendererMetricsHelper : public MetricsHelper { ...@@ -121,6 +121,18 @@ class PLATFORM_EXPORT RendererMetricsHelper : public MetricsHelper {
TaskDurationMetricReporter<TaskType>; TaskDurationMetricReporter<TaskType>;
TaskDurationPerTaskTypeMetricReporter per_task_type_duration_reporter_; TaskDurationPerTaskTypeMetricReporter per_task_type_duration_reporter_;
// The next three reporters are used to report the duration per task type
// split by renderer scheduler use case (check use_case.h for reference):
// None, Loading, and User Input (aggregation of multiple input-handling
// related use cases).
TaskDurationPerTaskTypeMetricReporter
no_use_case_per_task_type_duration_reporter_;
TaskDurationPerTaskTypeMetricReporter
loading_per_task_type_duration_reporter_;
TaskDurationPerTaskTypeMetricReporter
input_handling_per_task_type_duration_reporter_;
TaskDurationPerTaskTypeMetricReporter TaskDurationPerTaskTypeMetricReporter
foreground_per_task_type_duration_reporter_; foreground_per_task_type_duration_reporter_;
TaskDurationPerTaskTypeMetricReporter TaskDurationPerTaskTypeMetricReporter
......
...@@ -113370,6 +113370,14 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries. ...@@ -113370,6 +113370,14 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<affected-histogram name="RendererScheduler.TaskDurationPerQueueType2"/> <affected-histogram name="RendererScheduler.TaskDurationPerQueueType2"/>
</histogram_suffixes> </histogram_suffixes>
<histogram_suffixes name="RendererScheduler.TaskDurationPerTaskTypeSplit"
separator=".">
<suffix name="UseCaseNone"/>
<suffix name="UseCaseLoading"/>
<suffix name="UseCaseInputHandling"/>
<affected-histogram name="RendererScheduler.TaskDurationPerTaskType"/>
</histogram_suffixes>
<histogram_suffixes name="RendererThreadType" separator="."> <histogram_suffixes name="RendererThreadType" separator=".">
<suffix name="Main" label="Measurement taken on the main/render thread."/> <suffix name="Main" label="Measurement taken on the main/render thread."/>
<suffix name="Compositor" <suffix name="Compositor"
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