Chromium Code Reviews| Index: net/http/http_stream_factory_impl.cc |
| diff --git a/net/http/http_stream_factory_impl.cc b/net/http/http_stream_factory_impl.cc |
| index 13948e47fba48f91a2c6dada77722ef406a9ce9c..78b2f61a381f6c67f7b8ff418e0cfb1a7f534ceb 100644 |
| --- a/net/http/http_stream_factory_impl.cc |
| +++ b/net/http/http_stream_factory_impl.cc |
| @@ -107,28 +107,8 @@ HttpStreamFactoryImpl::HttpStreamFactoryImpl(HttpNetworkSession* session, |
| HttpStreamFactoryImpl::~HttpStreamFactoryImpl() { |
| DCHECK(spdy_session_request_map_.empty()); |
| - int alt_job_count = 0; |
| - int main_job_count = 0; |
| - int preconnect_controller_count = 0; |
| - for (const auto& it : job_controller_set_) { |
| - DCHECK(it->HasPendingAltJob() || it->HasPendingMainJob()); |
| - // For a preconnect controller, it should have exactly the main job. |
| - if (it->is_preconnect()) { |
| - preconnect_controller_count++; |
| - continue; |
| - } |
| - // For non-preconnects. |
| - if (it->HasPendingAltJob()) |
| - alt_job_count++; |
| - if (it->HasPendingMainJob()) |
| - main_job_count++; |
| - } |
| - UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfPreconnect", |
| - preconnect_controller_count); |
| - UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfNonPreconnectAltJob", |
| - alt_job_count); |
| - UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfNonPreconnectMainJob", |
| - main_job_count); |
| + UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfJobControllerAtShutDown", |
| + job_controller_set_.size()); |
| } |
| HttpStreamRequest* HttpStreamFactoryImpl::RequestStream( |
| @@ -195,6 +175,8 @@ HttpStreamRequest* HttpStreamFactoryImpl::RequestStreamInternal( |
| bool enable_ip_based_pooling, |
| bool enable_alternative_services, |
| const NetLogWithSource& net_log) { |
| + AddJobControllerCountToHistograms(); |
| + |
| auto job_controller = base::MakeUnique<JobController>( |
| this, delegate, session_, job_factory_.get(), request_info, |
| /* is_preconnect = */ false, enable_ip_based_pooling, |
| @@ -211,6 +193,8 @@ HttpStreamRequest* HttpStreamFactoryImpl::RequestStreamInternal( |
| void HttpStreamFactoryImpl::PreconnectStreams( |
| int num_streams, |
| const HttpRequestInfo& request_info) { |
| + AddJobControllerCountToHistograms(); |
| + |
| SSLConfig server_ssl_config; |
| SSLConfig proxy_ssl_config; |
| session_->GetSSLConfig(request_info, &server_ssl_config, &proxy_ssl_config); |
| @@ -372,6 +356,44 @@ bool HttpStreamFactoryImpl::ProxyServerSupportsPriorities( |
| scheme_host_port); |
| } |
| +void HttpStreamFactoryImpl::AddJobControllerCountToHistograms() const { |
| + // Only log the count of JobControllers when the count is hitting the |
| + // boundary: 100, 200, 400, etc. |
| + if (job_controller_set_.size() % 100 != 0) |
| + return; |
| + |
| + unsigned int job_controller_count_100 = job_controller_set_.size() / 100; |
| + if ((job_controller_count_100 & (job_controller_count_100 - 1)) != 0) |
| + return; |
|
xunjieli
2017/04/10 23:13:21
Line 362 to 367 can be written as:
if (job_contr
Zhongyi Shi
2017/04/10 23:30:12
Changed the limit to a multiple of 100.
|
| + |
| + UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfJobController", |
| + job_controller_set_.size()); |
| + |
| + int alt_job_count = 0; |
| + int main_job_count = 0; |
| + int preconnect_controller_count = 0; |
| + for (const auto& job_controller : job_controller_set_) { |
| + DCHECK(job_controller->HasPendingAltJob() || |
| + job_controller->HasPendingMainJob()); |
| + // For a preconnect controller, it should have exactly the main job. |
| + if (job_controller->is_preconnect()) { |
| + preconnect_controller_count++; |
| + continue; |
| + } |
| + // For non-preconnects. |
| + if (job_controller->HasPendingAltJob()) |
| + alt_job_count++; |
| + if (job_controller->HasPendingMainJob()) |
| + main_job_count++; |
| + } |
| + UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfPreconnect", |
| + preconnect_controller_count); |
| + UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfNonPreconnectAltJob", |
| + alt_job_count); |
| + UMA_HISTOGRAM_COUNTS_1M("Net.JobControllerSet.CountOfNonPreconnectMainJob", |
| + main_job_count); |
| +} |
| + |
| void HttpStreamFactoryImpl::DumpMemoryStats( |
| base::trace_event::ProcessMemoryDump* pmd, |
| const std::string& parent_absolute_name) const { |