OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 // The eviction policy is a very simple pure LRU, so the elements at the end of | 5 // The eviction policy is a very simple pure LRU, so the elements at the end of |
6 // the list are evicted until kCleanUpMargin free space is available. There is | 6 // the list are evicted until kCleanUpMargin free space is available. There is |
7 // only one list in use (Rankings::NO_USE), and elements are sent to the front | 7 // only one list in use (Rankings::NO_USE), and elements are sent to the front |
8 // of the list whenever they are accessed. | 8 // of the list whenever they are accessed. |
9 | 9 |
10 // The new (in-development) eviction policy ads re-use as a factor to evict | 10 // The new (in-development) eviction policy ads re-use as a factor to evict |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 namespace disk_cache { | 60 namespace disk_cache { |
61 | 61 |
62 void Eviction::Init(BackendImpl* backend) { | 62 void Eviction::Init(BackendImpl* backend) { |
63 // We grab a bunch of info from the backend to make the code a little cleaner | 63 // We grab a bunch of info from the backend to make the code a little cleaner |
64 // when we're actually doing work. | 64 // when we're actually doing work. |
65 backend_ = backend; | 65 backend_ = backend; |
66 rankings_ = &backend->rankings_; | 66 rankings_ = &backend->rankings_; |
67 header_ = &backend_->data_->header; | 67 header_ = &backend_->data_->header; |
68 max_size_ = LowWaterAdjust(backend_->max_size_); | 68 max_size_ = LowWaterAdjust(backend_->max_size_); |
69 new_eviction_ = backend->new_eviction_; | 69 new_eviction_ = backend->new_eviction_; |
| 70 first_trim_ = true; |
70 } | 71 } |
71 | 72 |
72 void Eviction::TrimCache(bool empty) { | 73 void Eviction::TrimCache(bool empty) { |
73 if (new_eviction_) | 74 if (new_eviction_) |
74 return TrimCacheV2(empty); | 75 return TrimCacheV2(empty); |
75 | 76 |
76 Trace("*** Trim Cache ***"); | 77 Trace("*** Trim Cache ***"); |
77 if (backend_->disabled_) | 78 if (backend_->disabled_) |
78 return; | 79 return; |
79 | 80 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 135 |
135 rankings_->Remove(entry->rankings(), GetListForEntry(entry)); | 136 rankings_->Remove(entry->rankings(), GetListForEntry(entry)); |
136 } | 137 } |
137 | 138 |
138 void Eviction::OnDestroyEntry(EntryImpl* entry) { | 139 void Eviction::OnDestroyEntry(EntryImpl* entry) { |
139 if (new_eviction_) | 140 if (new_eviction_) |
140 return OnDestroyEntryV2(entry); | 141 return OnDestroyEntryV2(entry); |
141 } | 142 } |
142 | 143 |
143 void Eviction::ReportTrimTimes(EntryImpl* entry) { | 144 void Eviction::ReportTrimTimes(EntryImpl* entry) { |
144 static bool first_time = true; | 145 if (first_trim_) { |
145 if (first_time) { | 146 first_trim_ = false; |
146 first_time = false; | |
147 if (backend_->ShouldReportAgain()) { | 147 if (backend_->ShouldReportAgain()) { |
148 std::string name(StringPrintf("DiskCache.TrimAge_%d", | 148 std::string name(StringPrintf("DiskCache.TrimAge_%d", |
149 header_->experiment)); | 149 header_->experiment)); |
150 UMA_HISTOGRAM_HOURS(name.c_str(), | 150 UMA_HISTOGRAM_HOURS(name.c_str(), |
151 (Time::Now() - entry->GetLastUsed()).InHours()); | 151 (Time::Now() - entry->GetLastUsed()).InHours()); |
152 } | 152 } |
153 | 153 |
154 if (header_->create_time && !header_->lru.filled) { | 154 if (header_->create_time && !header_->lru.filled) { |
155 // This is the first entry that we have to evict, generate some noise. | 155 // This is the first entry that we have to evict, generate some noise. |
156 header_->lru.filled = 1; | 156 header_->lru.filled = 1; |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 header_->lru.sizes[Rankings::DELETED]; | 414 header_->lru.sizes[Rankings::DELETED]; |
415 // Start by having each list to be roughly the same size. | 415 // Start by having each list to be roughly the same size. |
416 if (header_->lru.sizes[0] > data_entries / 3) | 416 if (header_->lru.sizes[0] > data_entries / 3) |
417 return 0; | 417 return 0; |
418 if (header_->lru.sizes[1] > data_entries / 3) | 418 if (header_->lru.sizes[1] > data_entries / 3) |
419 return 1; | 419 return 1; |
420 return 2; | 420 return 2; |
421 } | 421 } |
422 | 422 |
423 } // namespace disk_cache | 423 } // namespace disk_cache |
OLD | NEW |