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

Side by Side Diff: content/browser/loader/async_resource_handler.cc

Issue 1025813002: Remove the majority of the high-traffic Net.Async* histograms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 | tools/metrics/histograms/histograms.xml » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/loader/async_resource_handler.h" 5 #include "content/browser/loader/async_resource_handler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/containers/hash_tables.h" 11 #include "base/containers/hash_tables.h"
12 #include "base/debug/alias.h" 12 #include "base/debug/alias.h"
13 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/memory/shared_memory.h" 14 #include "base/memory/shared_memory.h"
15 #include "base/metrics/histogram.h" 15 #include "base/metrics/histogram_macros.h"
16 #include "base/strings/string_number_conversions.h" 16 #include "base/strings/string_number_conversions.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "content/browser/devtools/devtools_netlog_observer.h" 18 #include "content/browser/devtools/devtools_netlog_observer.h"
19 #include "content/browser/host_zoom_map_impl.h" 19 #include "content/browser/host_zoom_map_impl.h"
20 #include "content/browser/loader/resource_buffer.h" 20 #include "content/browser/loader/resource_buffer.h"
21 #include "content/browser/loader/resource_dispatcher_host_impl.h" 21 #include "content/browser/loader/resource_dispatcher_host_impl.h"
22 #include "content/browser/loader/resource_message_filter.h" 22 #include "content/browser/loader/resource_message_filter.h"
23 #include "content/browser/loader/resource_request_info_impl.h" 23 #include "content/browser/loader/resource_request_info_impl.h"
24 #include "content/browser/resource_context_impl.h" 24 #include "content/browser/resource_context_impl.h"
25 #include "content/common/resource_messages.h" 25 #include "content/common/resource_messages.h"
(...skipping 26 matching lines...) Expand all
52 static bool did_init = false; 52 static bool did_init = false;
53 if (did_init) 53 if (did_init)
54 return; 54 return;
55 did_init = true; 55 did_init = true;
56 56
57 GetNumericArg("resource-buffer-size", &kBufferSize); 57 GetNumericArg("resource-buffer-size", &kBufferSize);
58 GetNumericArg("resource-buffer-min-allocation-size", &kMinAllocationSize); 58 GetNumericArg("resource-buffer-min-allocation-size", &kMinAllocationSize);
59 GetNumericArg("resource-buffer-max-allocation-size", &kMaxAllocationSize); 59 GetNumericArg("resource-buffer-max-allocation-size", &kMaxAllocationSize);
60 } 60 }
61 61
62 int CalcUsedPercentage(int bytes_read, int buffer_size) {
63 double ratio = static_cast<double>(bytes_read) / buffer_size;
64 return static_cast<int>(ratio * 100.0 + 0.5); // Round to nearest integer.
65 }
66
67 } // namespace 62 } // namespace
68 63
69 class DependentIOBuffer : public net::WrappedIOBuffer { 64 class DependentIOBuffer : public net::WrappedIOBuffer {
70 public: 65 public:
71 DependentIOBuffer(ResourceBuffer* backing, char* memory) 66 DependentIOBuffer(ResourceBuffer* backing, char* memory)
72 : net::WrappedIOBuffer(memory), 67 : net::WrappedIOBuffer(memory),
73 backing_(backing) { 68 backing_(backing) {
74 } 69 }
75 private: 70 private:
76 ~DependentIOBuffer() override {} 71 ~DependentIOBuffer() override {}
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 if (!EnsureResourceBufferIsInitialized()) 244 if (!EnsureResourceBufferIsInitialized())
250 return false; 245 return false;
251 246
252 DCHECK(buffer_->CanAllocate()); 247 DCHECK(buffer_->CanAllocate());
253 char* memory = buffer_->Allocate(&allocation_size_); 248 char* memory = buffer_->Allocate(&allocation_size_);
254 CHECK(memory); 249 CHECK(memory);
255 250
256 *buf = new DependentIOBuffer(buffer_.get(), memory); 251 *buf = new DependentIOBuffer(buffer_.get(), memory);
257 *buf_size = allocation_size_; 252 *buf_size = allocation_size_;
258 253
259 UMA_HISTOGRAM_CUSTOM_COUNTS(
260 "Net.AsyncResourceHandler_SharedIOBuffer_Alloc",
261 *buf_size, 0, kMaxAllocationSize, 100);
262 return true; 254 return true;
263 } 255 }
264 256
265 bool AsyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { 257 bool AsyncResourceHandler::OnReadCompleted(int bytes_read, bool* defer) {
266 DCHECK_GE(bytes_read, 0); 258 DCHECK_GE(bytes_read, 0);
267 259
268 if (!bytes_read) 260 if (!bytes_read)
269 return true; 261 return true;
270 262
271 ResourceMessageFilter* filter = GetFilter(); 263 ResourceMessageFilter* filter = GetFilter();
272 if (!filter) 264 if (!filter)
273 return false; 265 return false;
274 266
275 buffer_->ShrinkLastAllocation(bytes_read); 267 buffer_->ShrinkLastAllocation(bytes_read);
276 268
277 UMA_HISTOGRAM_CUSTOM_COUNTS(
278 "Net.AsyncResourceHandler_SharedIOBuffer_Used",
279 bytes_read, 0, kMaxAllocationSize, 100);
280 UMA_HISTOGRAM_PERCENTAGE(
281 "Net.AsyncResourceHandler_SharedIOBuffer_UsedPercentage",
282 CalcUsedPercentage(bytes_read, allocation_size_));
283
284 if (!sent_first_data_msg_) { 269 if (!sent_first_data_msg_) {
285 base::SharedMemoryHandle handle; 270 base::SharedMemoryHandle handle;
286 int size; 271 int size;
287 if (!buffer_->ShareToProcess(filter->PeerHandle(), &handle, &size)) 272 if (!buffer_->ShareToProcess(filter->PeerHandle(), &handle, &size))
288 return false; 273 return false;
289 filter->Send(new ResourceMsg_SetDataBuffer( 274 filter->Send(new ResourceMsg_SetDataBuffer(
290 GetRequestID(), handle, size, filter->peer_pid())); 275 GetRequestID(), handle, size, filter->peer_pid()));
291 sent_first_data_msg_ = true; 276 sent_first_data_msg_ = true;
292 } 277 }
293 278
294 int data_offset = buffer_->GetLastAllocationOffset(); 279 int data_offset = buffer_->GetLastAllocationOffset();
295 280
296 int64_t current_transfer_size = request()->GetTotalReceivedBytes(); 281 int64_t current_transfer_size = request()->GetTotalReceivedBytes();
297 int encoded_data_length = current_transfer_size - reported_transfer_size_; 282 int encoded_data_length = current_transfer_size - reported_transfer_size_;
298 reported_transfer_size_ = current_transfer_size; 283 reported_transfer_size_ = current_transfer_size;
299 284
300 filter->Send(new ResourceMsg_DataReceived( 285 filter->Send(new ResourceMsg_DataReceived(
301 GetRequestID(), data_offset, bytes_read, encoded_data_length)); 286 GetRequestID(), data_offset, bytes_read, encoded_data_length));
302 ++pending_data_count_; 287 ++pending_data_count_;
303 UMA_HISTOGRAM_CUSTOM_COUNTS(
304 "Net.AsyncResourceHandler_PendingDataCount",
305 pending_data_count_, 0, 100, 100);
306 288
307 if (!buffer_->CanAllocate()) { 289 if (!buffer_->CanAllocate()) {
308 UMA_HISTOGRAM_CUSTOM_COUNTS(
309 "Net.AsyncResourceHandler_PendingDataCount_WhenFull",
310 pending_data_count_, 0, 100, 100);
311 *defer = did_defer_ = true; 290 *defer = did_defer_ = true;
312 OnDefer(); 291 OnDefer();
313 } 292 }
314 293
315 return true; 294 return true;
316 } 295 }
317 296
318 void AsyncResourceHandler::OnDataDownloaded(int bytes_downloaded) { 297 void AsyncResourceHandler::OnDataDownloaded(int bytes_downloaded) {
319 int64_t current_transfer_size = request()->GetTotalReceivedBytes(); 298 int64_t current_transfer_size = request()->GetTotalReceivedBytes();
320 int encoded_data_length = current_transfer_size - reported_transfer_size_; 299 int encoded_data_length = current_transfer_size - reported_transfer_size_;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 request()->LogUnblocked(); 383 request()->LogUnblocked();
405 controller()->Resume(); 384 controller()->Resume();
406 } 385 }
407 } 386 }
408 387
409 void AsyncResourceHandler::OnDefer() { 388 void AsyncResourceHandler::OnDefer() {
410 request()->LogBlockedBy("AsyncResourceHandler"); 389 request()->LogBlockedBy("AsyncResourceHandler");
411 } 390 }
412 391
413 } // namespace content 392 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698