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

Side by Side Diff: content/browser/renderer_host/input/render_widget_host_latency_tracker.cc

Issue 2954473002: Record accuracy of expected queueing time metric. (Closed)
Patch Set: Set trace ID in test. Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « no previous file | content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/input/render_widget_host_latency_tracker .h" 5 #include "content/browser/renderer_host/input/render_widget_host_latency_tracker .h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram_functions.h" 10 #include "base/metrics/histogram_functions.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 for (size_t i = 0; i < new_components_key.size(); i++) { 68 for (size_t i = 0; i < new_components_key.size(); i++) {
69 latency->AddLatencyNumberWithTimestamp( 69 latency->AddLatencyNumberWithTimestamp(
70 new_components_key[i].first, 70 new_components_key[i].first,
71 new_components_key[i].second, 71 new_components_key[i].second,
72 new_components_value[i].sequence_number, 72 new_components_value[i].sequence_number,
73 new_components_value[i].event_time, 73 new_components_value[i].event_time,
74 new_components_value[i].event_count); 74 new_components_value[i].event_count);
75 } 75 }
76 } 76 }
77 77
78 void RecordEQTAccuracy(base::TimeDelta queueing_time,
79 base::TimeDelta expected_queueing_time) {
80 float expected_queueing_time_ms = expected_queueing_time.InMillisecondsF();
81
82 if (expected_queueing_time_ms < 10) {
83 UMA_HISTOGRAM_TIMES(
84 "RendererScheduler."
85 "QueueingDurationWhenExpectedQueueingTime_LessThan.10ms",
86 queueing_time);
87 }
88
89 if (expected_queueing_time_ms < 150) {
90 UMA_HISTOGRAM_TIMES(
91 "RendererScheduler."
92 "QueueingDurationWhenExpectedQueueingTime_LessThan.150ms",
93 queueing_time);
94 }
95
96 if (expected_queueing_time_ms < 300) {
97 UMA_HISTOGRAM_TIMES(
98 "RendererScheduler."
99 "QueueingDurationWhenExpectedQueueingTime_LessThan.300ms",
100 queueing_time);
101 }
102
103 if (expected_queueing_time_ms < 450) {
104 UMA_HISTOGRAM_TIMES(
105 "RendererScheduler."
106 "QueueingDurationWhenExpectedQueueingTime_LessThan.450ms",
107 queueing_time);
108 }
109
110 if (expected_queueing_time_ms > 10) {
111 UMA_HISTOGRAM_TIMES(
112 "RendererScheduler."
113 "QueueingDurationWhenExpectedQueueingTime_GreaterThan.10ms",
114 queueing_time);
115 }
116
117 if (expected_queueing_time_ms > 150) {
118 UMA_HISTOGRAM_TIMES(
119 "RendererScheduler."
120 "QueueingDurationWhenExpectedQueueingTime_GreaterThan.150ms",
121 queueing_time);
122 }
123
124 if (expected_queueing_time_ms > 300) {
125 UMA_HISTOGRAM_TIMES(
126 "RendererScheduler."
127 "QueueingDurationWhenExpectedQueueingTime_GreaterThan.300ms",
128 queueing_time);
129 }
130
131 if (expected_queueing_time_ms > 450) {
132 UMA_HISTOGRAM_TIMES(
133 "RendererScheduler."
134 "QueueingDurationWhenExpectedQueueingTime_GreaterThan.450ms",
135 queueing_time);
136 }
137 }
138
78 } // namespace 139 } // namespace
79 140
80 RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker() 141 RenderWidgetHostLatencyTracker::RenderWidgetHostLatencyTracker()
81 : ukm_source_id_(-1), 142 : ukm_source_id_(-1),
82 last_event_id_(0), 143 last_event_id_(0),
83 latency_component_id_(0), 144 latency_component_id_(0),
84 device_scale_factor_(1), 145 device_scale_factor_(1),
85 has_seen_first_gesture_scroll_update_(false), 146 has_seen_first_gesture_scroll_update_(false),
86 active_multi_finger_gesture_(false), 147 active_multi_finger_gesture_(false),
87 touch_start_default_prevented_(false), 148 touch_start_default_prevented_(false),
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 action_prevented ? "DefaultPrevented" : "DefaultAllowed"; 221 action_prevented ? "DefaultPrevented" : "DefaultAllowed";
161 222
162 LatencyInfo::LatencyComponent main_component; 223 LatencyInfo::LatencyComponent main_component;
163 if (latency.FindLatency(ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT, 0, 224 if (latency.FindLatency(ui::INPUT_EVENT_LATENCY_RENDERER_MAIN_COMPONENT, 0,
164 &main_component)) { 225 &main_component)) {
165 DCHECK_EQ(main_component.event_count, 1u); 226 DCHECK_EQ(main_component.event_count, 1u);
166 if (!multi_finger_touch_gesture) { 227 if (!multi_finger_touch_gesture) {
167 UMA_HISTOGRAM_INPUT_LATENCY_MILLISECONDS( 228 UMA_HISTOGRAM_INPUT_LATENCY_MILLISECONDS(
168 "Event.Latency.QueueingTime." + event_name + default_action_status, 229 "Event.Latency.QueueingTime." + event_name + default_action_status,
169 rwh_component, main_component); 230 rwh_component, main_component);
231
232 RecordEQTAccuracy(
233 main_component.last_event_time - rwh_component.first_event_time,
234 latency.expected_queueing_time_on_dispatch());
170 } 235 }
171 } 236 }
172 237
173 LatencyInfo::LatencyComponent acked_component; 238 LatencyInfo::LatencyComponent acked_component;
174 if (latency.FindLatency(ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT, 0, 239 if (latency.FindLatency(ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT, 0,
175 &acked_component)) { 240 &acked_component)) {
176 DCHECK_EQ(acked_component.event_count, 1u); 241 DCHECK_EQ(acked_component.event_count, 1u);
177 if (!multi_finger_touch_gesture && 242 if (!multi_finger_touch_gesture &&
178 main_component.event_time != base::TimeTicks()) { 243 main_component.event_time != base::TimeTicks()) {
179 UMA_HISTOGRAM_INPUT_LATENCY_MILLISECONDS( 244 UMA_HISTOGRAM_INPUT_LATENCY_MILLISECONDS(
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 if (ukm_source_id == -1 || !ukm_recorder) 420 if (ukm_source_id == -1 || !ukm_recorder)
356 return; 421 return;
357 422
358 std::unique_ptr<ukm::UkmEntryBuilder> builder = 423 std::unique_ptr<ukm::UkmEntryBuilder> builder =
359 ukm_recorder->GetEntryBuilder(ukm_source_id, event_name.c_str()); 424 ukm_recorder->GetEntryBuilder(ukm_source_id, event_name.c_str());
360 builder->AddMetric(metric_name.c_str(), (end_component.last_event_time - 425 builder->AddMetric(metric_name.c_str(), (end_component.last_event_time -
361 start_component.first_event_time) 426 start_component.first_event_time)
362 .InMicroseconds()); 427 .InMicroseconds());
363 } 428 }
364 } // namespace content 429 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698