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

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/renderer/task_queue_throttler.cc

Issue 2393193003: Revert "[scheduler] Throttle background frames with 1% CPU limit" (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "platform/scheduler/renderer/task_queue_throttler.h" 5 #include "platform/scheduler/renderer/task_queue_throttler.h"
6 6
7 #include <cstdint> 7 #include <cstdint>
8 8
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 TaskQueueThrottler::TimeBudgetPool::~TimeBudgetPool() {} 81 TaskQueueThrottler::TimeBudgetPool::~TimeBudgetPool() {}
82 82
83 void TaskQueueThrottler::TimeBudgetPool::SetTimeBudget(base::TimeTicks now, 83 void TaskQueueThrottler::TimeBudgetPool::SetTimeBudget(base::TimeTicks now,
84 double cpu_percentage) { 84 double cpu_percentage) {
85 Advance(now); 85 Advance(now);
86 cpu_percentage_ = cpu_percentage; 86 cpu_percentage_ = cpu_percentage;
87 } 87 }
88 88
89 void TaskQueueThrottler::TimeBudgetPool::AddQueue(base::TimeTicks now, 89 void TaskQueueThrottler::TimeBudgetPool::AddQueue(base::TimeTicks now,
90 TaskQueue* queue) { 90 TaskQueue* queue) {
91 std::pair<TaskQueueMap::iterator, bool> insert_result = 91 Metadata& metadata = task_queue_throttler_->queue_details_[queue];
92 task_queue_throttler_->queue_details_.insert(
93 std::make_pair(queue, Metadata(0, queue->IsQueueEnabled())));
94 Metadata& metadata = insert_result.first->second;
95 DCHECK(!metadata.time_budget_pool); 92 DCHECK(!metadata.time_budget_pool);
96 metadata.time_budget_pool = this; 93 metadata.time_budget_pool = this;
97 94
98 associated_task_queues_.insert(queue); 95 associated_task_queues_.insert(queue);
99 96
100 if (!is_enabled_ || !metadata.IsThrottled()) 97 if (!metadata.IsThrottled())
101 return; 98 return;
102 99
103 queue->SetQueueEnabled(false); 100 queue->SetQueueEnabled(false);
104 101
105 task_queue_throttler_->MaybeSchedulePumpQueue(FROM_HERE, now, queue, 102 task_queue_throttler_->MaybeSchedulePumpQueue(FROM_HERE, now, queue,
106 GetNextAllowedRunTime()); 103 GetNextAllowedRunTime());
107 } 104 }
108 105
109 void TaskQueueThrottler::TimeBudgetPool::RemoveQueue(base::TimeTicks now, 106 void TaskQueueThrottler::TimeBudgetPool::RemoveQueue(base::TimeTicks now,
110 TaskQueue* queue) { 107 TaskQueue* queue) {
111 auto find_it = task_queue_throttler_->queue_details_.find(queue); 108 auto find_it = task_queue_throttler_->queue_details_.find(queue);
112 DCHECK(find_it != task_queue_throttler_->queue_details_.end() && 109 DCHECK(find_it != task_queue_throttler_->queue_details_.end() &&
113 find_it->second.time_budget_pool == this); 110 find_it->second.time_budget_pool == this);
114 find_it->second.time_budget_pool = nullptr; 111 find_it->second.time_budget_pool = nullptr;
115 bool is_throttled = find_it->second.IsThrottled(); 112 bool is_throttled = find_it->second.IsThrottled();
116 113
117 task_queue_throttler_->MaybeDeleteQueueMetadata(find_it); 114 task_queue_throttler_->MaybeDeleteQueueMetadata(find_it);
118 associated_task_queues_.erase(queue); 115 associated_task_queues_.erase(queue);
119 116
120 if (!is_enabled_ || !is_throttled) 117 if (is_throttled)
121 return; 118 return;
122 119
123 task_queue_throttler_->MaybeSchedulePumpQueue(FROM_HERE, now, queue, 120 task_queue_throttler_->MaybeSchedulePumpQueue(FROM_HERE, now, queue,
124 base::nullopt); 121 base::nullopt);
125 } 122 }
126 123
127 void TaskQueueThrottler::TimeBudgetPool::EnableThrottling(LazyNow* lazy_now) { 124 void TaskQueueThrottler::TimeBudgetPool::EnableThrottling(LazyNow* lazy_now) {
128 if (is_enabled_) 125 if (is_enabled_)
129 return; 126 return;
130 is_enabled_ = true; 127 is_enabled_ = true;
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 return std::max(now, time_budget_pool->GetNextAllowedRunTime()); 566 return std::max(now, time_budget_pool->GetNextAllowedRunTime());
570 } 567 }
571 568
572 void TaskQueueThrottler::MaybeDeleteQueueMetadata(TaskQueueMap::iterator it) { 569 void TaskQueueThrottler::MaybeDeleteQueueMetadata(TaskQueueMap::iterator it) {
573 if (!it->second.IsThrottled() && !it->second.time_budget_pool) 570 if (!it->second.IsThrottled() && !it->second.time_budget_pool)
574 queue_details_.erase(it); 571 queue_details_.erase(it);
575 } 572 }
576 573
577 } // namespace scheduler 574 } // namespace scheduler
578 } // namespace blink 575 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698