Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "cc/scheduler/compositor_timing_history.h" | 5 #include "cc/scheduler/compositor_timing_history.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "base/metrics/histogram_macros.h" | 11 #include "base/metrics/histogram_macros.h" |
| 12 #include "base/trace_event/trace_event.h" | 12 #include "base/trace_event/trace_event.h" |
| 13 #include "cc/debug/rendering_stats_instrumentation.h" | 13 #include "cc/debug/rendering_stats_instrumentation.h" |
| 14 | 14 |
| 15 namespace cc { | 15 namespace cc { |
| 16 | 16 |
| 17 class CompositorTimingHistory::UMAReporter { | 17 class CompositorTimingHistory::UMAReporter { |
| 18 public: | 18 public: |
| 19 virtual ~UMAReporter() {} | 19 virtual ~UMAReporter() {} |
| 20 | 20 |
| 21 // Throughput measurements | 21 // Throughput measurements |
| 22 virtual void AddBeginMainFrameIntervalCritical(base::TimeDelta interval) = 0; | 22 virtual void AddBeginMainFrameIntervalCritical(base::TimeDelta interval) = 0; |
| 23 virtual void AddBeginMainFrameIntervalNotCritical( | 23 virtual void AddBeginMainFrameIntervalNotCritical( |
| 24 base::TimeDelta interval) = 0; | 24 base::TimeDelta interval) = 0; |
| 25 virtual void AddCommitInterval(base::TimeDelta interval) = 0; | 25 virtual void AddCommitInterval(base::TimeDelta interval) = 0; |
| 26 virtual void AddDrawInterval(base::TimeDelta interval) = 0; | 26 virtual void AddDrawInterval(base::TimeDelta interval) = 0; |
| 27 | 27 |
| 28 // Latency measurements | 28 // Latency measurements |
| 29 virtual void AddBeginMainFrameLatency(base::TimeDelta delta) = 0; | |
| 29 virtual void AddBeginMainFrameQueueDurationCriticalDuration( | 30 virtual void AddBeginMainFrameQueueDurationCriticalDuration( |
| 30 base::TimeDelta duration) = 0; | 31 base::TimeDelta duration) = 0; |
| 31 virtual void AddBeginMainFrameQueueDurationNotCriticalDuration( | 32 virtual void AddBeginMainFrameQueueDurationNotCriticalDuration( |
| 32 base::TimeDelta duration) = 0; | 33 base::TimeDelta duration) = 0; |
| 33 virtual void AddBeginMainFrameStartToCommitDuration( | 34 virtual void AddBeginMainFrameStartToCommitDuration( |
| 34 base::TimeDelta duration) = 0; | 35 base::TimeDelta duration) = 0; |
| 35 virtual void AddCommitToReadyToActivateDuration(base::TimeDelta duration) = 0; | 36 virtual void AddCommitToReadyToActivateDuration(base::TimeDelta duration) = 0; |
| 36 virtual void AddPrepareTilesDuration(base::TimeDelta duration) = 0; | 37 virtual void AddPrepareTilesDuration(base::TimeDelta duration) = 0; |
| 37 virtual void AddActivateDuration(base::TimeDelta duration) = 0; | 38 virtual void AddActivateDuration(base::TimeDelta duration) = 0; |
| 38 virtual void AddDrawDuration(base::TimeDelta duration) = 0; | 39 virtual void AddDrawDuration(base::TimeDelta duration) = 0; |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 190 } | 191 } |
| 191 | 192 |
| 192 void AddSubmitAckWasFast(bool was_fast) override { | 193 void AddSubmitAckWasFast(bool was_fast) override { |
| 193 UMA_HISTOGRAM_BOOLEAN("Scheduling.Renderer.SwapAckWasFast", was_fast); | 194 UMA_HISTOGRAM_BOOLEAN("Scheduling.Renderer.SwapAckWasFast", was_fast); |
| 194 } | 195 } |
| 195 | 196 |
| 196 void AddMainAndImplFrameTimeDelta(base::TimeDelta delta) override { | 197 void AddMainAndImplFrameTimeDelta(base::TimeDelta delta) override { |
| 197 UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED( | 198 UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED( |
| 198 "Scheduling.Renderer.MainAndImplFrameTimeDelta", delta); | 199 "Scheduling.Renderer.MainAndImplFrameTimeDelta", delta); |
| 199 } | 200 } |
| 201 | |
| 202 void AddBeginMainFrameLatency(base::TimeDelta delta) override { | |
| 203 UMA_HISTOGRAM_CUSTOM_TIMES_DURATION( | |
| 204 "Scheduling.Renderer.BeginMainFrameLatency", delta); | |
|
ajuma
2017/03/14 14:54:10
Bikeshed: given the number of BeginFrame timing me
stanisc
2017/03/14 21:25:40
OK. Changed this to VsyncToBeginMainFrameLatency.
| |
| 205 } | |
| 200 }; | 206 }; |
| 201 | 207 |
| 202 class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter { | 208 class BrowserUMAReporter : public CompositorTimingHistory::UMAReporter { |
| 203 public: | 209 public: |
| 204 ~BrowserUMAReporter() override {} | 210 ~BrowserUMAReporter() override {} |
| 205 | 211 |
| 206 void AddBeginMainFrameIntervalCritical(base::TimeDelta interval) override { | 212 void AddBeginMainFrameIntervalCritical(base::TimeDelta interval) override { |
| 207 UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED( | 213 UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED( |
| 208 "Scheduling.Browser.BeginMainFrameIntervalCritical", interval); | 214 "Scheduling.Browser.BeginMainFrameIntervalCritical", interval); |
| 209 } | 215 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 267 } | 273 } |
| 268 | 274 |
| 269 void AddSubmitAckWasFast(bool was_fast) override { | 275 void AddSubmitAckWasFast(bool was_fast) override { |
| 270 UMA_HISTOGRAM_BOOLEAN("Scheduling.Browser.SwapAckWasFast", was_fast); | 276 UMA_HISTOGRAM_BOOLEAN("Scheduling.Browser.SwapAckWasFast", was_fast); |
| 271 } | 277 } |
| 272 | 278 |
| 273 void AddMainAndImplFrameTimeDelta(base::TimeDelta delta) override { | 279 void AddMainAndImplFrameTimeDelta(base::TimeDelta delta) override { |
| 274 UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED( | 280 UMA_HISTOGRAM_CUSTOM_TIMES_VSYNC_ALIGNED( |
| 275 "Scheduling.Browser.MainAndImplFrameTimeDelta", delta); | 281 "Scheduling.Browser.MainAndImplFrameTimeDelta", delta); |
| 276 } | 282 } |
| 283 | |
| 284 void AddBeginMainFrameLatency(base::TimeDelta delta) override { | |
| 285 UMA_HISTOGRAM_CUSTOM_TIMES_DURATION( | |
| 286 "Scheduling.Browser.BeginMainFrameLatency", delta); | |
| 287 } | |
| 277 }; | 288 }; |
| 278 | 289 |
| 279 class NullUMAReporter : public CompositorTimingHistory::UMAReporter { | 290 class NullUMAReporter : public CompositorTimingHistory::UMAReporter { |
| 280 public: | 291 public: |
| 281 ~NullUMAReporter() override {} | 292 ~NullUMAReporter() override {} |
| 282 void AddBeginMainFrameIntervalCritical(base::TimeDelta interval) override {} | 293 void AddBeginMainFrameIntervalCritical(base::TimeDelta interval) override {} |
| 283 void AddBeginMainFrameIntervalNotCritical(base::TimeDelta interval) override { | 294 void AddBeginMainFrameIntervalNotCritical(base::TimeDelta interval) override { |
| 284 } | 295 } |
| 285 void AddCommitInterval(base::TimeDelta interval) override {} | 296 void AddCommitInterval(base::TimeDelta interval) override {} |
| 286 void AddDrawInterval(base::TimeDelta interval) override {} | 297 void AddDrawInterval(base::TimeDelta interval) override {} |
| 287 void AddBeginMainFrameQueueDurationCriticalDuration( | 298 void AddBeginMainFrameQueueDurationCriticalDuration( |
| 288 base::TimeDelta duration) override {} | 299 base::TimeDelta duration) override {} |
| 289 void AddBeginMainFrameQueueDurationNotCriticalDuration( | 300 void AddBeginMainFrameQueueDurationNotCriticalDuration( |
| 290 base::TimeDelta duration) override {} | 301 base::TimeDelta duration) override {} |
| 291 void AddBeginMainFrameStartToCommitDuration( | 302 void AddBeginMainFrameStartToCommitDuration( |
| 292 base::TimeDelta duration) override {} | 303 base::TimeDelta duration) override {} |
| 293 void AddCommitToReadyToActivateDuration(base::TimeDelta duration) override {} | 304 void AddCommitToReadyToActivateDuration(base::TimeDelta duration) override {} |
| 294 void AddPrepareTilesDuration(base::TimeDelta duration) override {} | 305 void AddPrepareTilesDuration(base::TimeDelta duration) override {} |
| 295 void AddActivateDuration(base::TimeDelta duration) override {} | 306 void AddActivateDuration(base::TimeDelta duration) override {} |
| 296 void AddDrawDuration(base::TimeDelta duration) override {} | 307 void AddDrawDuration(base::TimeDelta duration) override {} |
| 297 void AddSubmitToAckLatency(base::TimeDelta duration) override {} | 308 void AddSubmitToAckLatency(base::TimeDelta duration) override {} |
| 298 void AddSubmitAckWasFast(bool was_fast) override {} | 309 void AddSubmitAckWasFast(bool was_fast) override {} |
| 299 void AddMainAndImplFrameTimeDelta(base::TimeDelta delta) override {} | 310 void AddMainAndImplFrameTimeDelta(base::TimeDelta delta) override {} |
| 311 void AddBeginMainFrameLatency(base::TimeDelta delta) override {} | |
| 300 }; | 312 }; |
| 301 | 313 |
| 302 } // namespace | 314 } // namespace |
| 303 | 315 |
| 304 CompositorTimingHistory::CompositorTimingHistory( | 316 CompositorTimingHistory::CompositorTimingHistory( |
| 305 bool using_synchronous_renderer_compositor, | 317 bool using_synchronous_renderer_compositor, |
| 306 UMACategory uma_category, | 318 UMACategory uma_category, |
| 307 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 319 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
| 308 : using_synchronous_renderer_compositor_( | 320 : using_synchronous_renderer_compositor_( |
| 309 using_synchronous_renderer_compositor), | 321 using_synchronous_renderer_compositor), |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 493 void CompositorTimingHistory::WillBeginMainFrame( | 505 void CompositorTimingHistory::WillBeginMainFrame( |
| 494 bool on_critical_path, | 506 bool on_critical_path, |
| 495 base::TimeTicks main_frame_time) { | 507 base::TimeTicks main_frame_time) { |
| 496 DCHECK_EQ(base::TimeTicks(), begin_main_frame_sent_time_); | 508 DCHECK_EQ(base::TimeTicks(), begin_main_frame_sent_time_); |
| 497 DCHECK_EQ(base::TimeTicks(), begin_main_frame_frame_time_); | 509 DCHECK_EQ(base::TimeTicks(), begin_main_frame_frame_time_); |
| 498 | 510 |
| 499 begin_main_frame_on_critical_path_ = on_critical_path; | 511 begin_main_frame_on_critical_path_ = on_critical_path; |
| 500 begin_main_frame_sent_time_ = Now(); | 512 begin_main_frame_sent_time_ = Now(); |
| 501 begin_main_frame_frame_time_ = main_frame_time; | 513 begin_main_frame_frame_time_ = main_frame_time; |
| 502 | 514 |
| 515 uma_reporter_->AddBeginMainFrameLatency(begin_main_frame_sent_time_ - | |
| 516 begin_main_frame_frame_time_); | |
| 517 | |
| 503 did_send_begin_main_frame_ = true; | 518 did_send_begin_main_frame_ = true; |
| 504 SetBeginMainFrameNeededContinuously(true); | 519 SetBeginMainFrameNeededContinuously(true); |
| 505 } | 520 } |
| 506 | 521 |
| 507 void CompositorTimingHistory::BeginMainFrameStarted( | 522 void CompositorTimingHistory::BeginMainFrameStarted( |
| 508 base::TimeTicks main_thread_start_time) { | 523 base::TimeTicks main_thread_start_time) { |
| 509 DCHECK_NE(base::TimeTicks(), begin_main_frame_sent_time_); | 524 DCHECK_NE(base::TimeTicks(), begin_main_frame_sent_time_); |
| 510 DCHECK_EQ(base::TimeTicks(), begin_main_frame_start_time_); | 525 DCHECK_EQ(base::TimeTicks(), begin_main_frame_start_time_); |
| 511 begin_main_frame_start_time_ = main_thread_start_time; | 526 begin_main_frame_start_time_ = main_thread_start_time; |
| 512 } | 527 } |
| (...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 724 uma_reporter_->AddSubmitToAckLatency(submit_to_ack_duration); | 739 uma_reporter_->AddSubmitToAckLatency(submit_to_ack_duration); |
| 725 if (submit_ack_watchdog_enabled_) { | 740 if (submit_ack_watchdog_enabled_) { |
| 726 bool was_fast = submit_to_ack_duration < kSubmitAckWatchdogTimeout; | 741 bool was_fast = submit_to_ack_duration < kSubmitAckWatchdogTimeout; |
| 727 uma_reporter_->AddSubmitAckWasFast(was_fast); | 742 uma_reporter_->AddSubmitAckWasFast(was_fast); |
| 728 submit_ack_watchdog_enabled_ = false; | 743 submit_ack_watchdog_enabled_ = false; |
| 729 } | 744 } |
| 730 submit_start_time_ = base::TimeTicks(); | 745 submit_start_time_ = base::TimeTicks(); |
| 731 } | 746 } |
| 732 | 747 |
| 733 } // namespace cc | 748 } // namespace cc |
| OLD | NEW |