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

Unified Diff: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc

Issue 2866613002: EQT: Change Expected Queuing Time from per-second to sliding window (Closed)
Patch Set: escape backslash Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
index 168aca33e54091d176cadb902c549abc5ad80818..87112332348c63bfd56b230c1e8eb4f5e52aabf9 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl.cc
@@ -50,6 +50,8 @@ constexpr base::TimeDelta kThreadLoadTrackerWaitingPeriodBeforeReporting =
// We do not throttle anything while audio is played and shortly after that.
constexpr base::TimeDelta kThrottlingDelayAfterAudioIsPlayed =
base::TimeDelta::FromSeconds(5);
+constexpr base::TimeDelta kQueueingTimeWindowDuration =
+ base::TimeDelta::FromSeconds(1);
void ReportForegroundRendererTaskLoad(base::TimeTicks time, double load) {
if (!blink::RuntimeEnabledFeatures::timerThrottlingForBackgroundTabsEnabled())
@@ -100,7 +102,7 @@ RendererSchedulerImpl::RendererSchedulerImpl(
base::Unretained(this)),
helper_.ControlTaskQueue()),
seqlock_queueing_time_estimator_(
- QueueingTimeEstimator(this, base::TimeDelta::FromSeconds(1))),
+ QueueingTimeEstimator(this, kQueueingTimeWindowDuration, 20)),
main_thread_only_(this,
compositor_task_queue_,
helper_.scheduler_tqm_delegate().get(),
@@ -1693,7 +1695,6 @@ bool RendererSchedulerImpl::MainThreadSeemsUnresponsive(
base::TimeDelta estimated_queueing_time;
bool can_read = false;
- QueueingTimeEstimator::State queueing_time_estimator_state;
base::subtle::Atomic32 version;
seqlock_queueing_time_estimator_.seqlock.TryRead(&can_read, &version);
@@ -1703,7 +1704,7 @@ bool RendererSchedulerImpl::MainThreadSeemsUnresponsive(
if (!can_read)
return GetCompositorThreadOnly().main_thread_seems_unresponsive;
- queueing_time_estimator_state =
+ QueueingTimeEstimator::State queueing_time_estimator_state =
seqlock_queueing_time_estimator_.data.GetState();
// If we fail to determine if the main thread is busy, assume whether or not
@@ -1854,12 +1855,26 @@ void RendererSchedulerImpl::RemoveTaskTimeObserver(
}
void RendererSchedulerImpl::OnQueueingTimeForWindowEstimated(
- base::TimeDelta queueing_time) {
+ base::TimeDelta queueing_time,
+ base::TimeTicks window_start_time) {
+ // RendererScheduler reports the queueing time once per window's duration.
+ // |stepEQT|stepEQT|stepEQT|stepEQT|stepEQT|stepEQT|
+ // Report: |-------window EQT------|
+ // Discard: |-------window EQT------|
+ // Discard: |-------window EQT------|
+ // Report: |-------window EQT------|
+ if (window_start_time -
+ GetMainThreadOnly().uma_last_queueing_time_report_window_start_time <
+ kQueueingTimeWindowDuration) {
+ return;
+ }
UMA_HISTOGRAM_TIMES("RendererScheduler.ExpectedTaskQueueingDuration",
queueing_time);
TRACE_COUNTER1(TRACE_DISABLED_BY_DEFAULT("renderer.scheduler"),
"estimated_queueing_time_for_window",
queueing_time.InMillisecondsF());
+ GetMainThreadOnly().uma_last_queueing_time_report_window_start_time =
+ window_start_time;
}
AutoAdvancingVirtualTimeDomain* RendererSchedulerImpl::GetVirtualTimeDomain() {

Powered by Google App Engine
This is Rietveld 408576698