Chromium Code Reviews| Index: net/quic/chromium/quic_stream_factory.cc |
| diff --git a/net/quic/chromium/quic_stream_factory.cc b/net/quic/chromium/quic_stream_factory.cc |
| index 0f855f0aad2fc91b2dbd342ed323617889c9626e..6bac76892972f25b43cdbe214aabf78a9fb82365 100644 |
| --- a/net/quic/chromium/quic_stream_factory.cc |
| +++ b/net/quic/chromium/quic_stream_factory.cc |
| @@ -67,6 +67,12 @@ using NetworkHandle = net::NetworkChangeNotifier::NetworkHandle; |
| namespace net { |
| +// Returns the estimate of dynamically allocated memory of an IPEndPoint. Used |
| +// in tracking IPAliasMap. |
|
ssid
2017/04/07 17:14:04
4 bytes of dynamic memory sounds too low to add so
xunjieli
2017/04/07 21:37:59
Done.
|
| +size_t EstimateMemoryUsage(const IPEndPoint& end_point) { |
| + return 4; |
| +} |
| + |
| namespace { |
| enum CreateSessionFailure { |
| @@ -282,6 +288,12 @@ class QuicStreamFactory::CertVerifierJob { |
| const QuicServerId& server_id() const { return server_id_; } |
| + size_t EstimateMemoryUsage() const { |
| + // TODO(xunjieli): crbug.com/669108. Track |verify_context_| and |
| + // |verify_details_|. |
| + return base::trace_event::EstimateMemoryUsage(verify_error_details_); |
| + } |
| + |
| private: |
| const QuicServerId server_id_; |
| ProofVerifierCallbackImpl* verify_callback_; |
| @@ -339,6 +351,9 @@ class QuicStreamFactory::Job { |
| base::WeakPtr<Job> GetWeakPtr() { return weak_factory_.GetWeakPtr(); } |
| + // Returns the estimate of dynamically allocated memory in bytes. |
| + size_t EstimateMemoryUsage() const; |
| + |
| private: |
| enum IoState { |
| STATE_NONE, |
| @@ -471,6 +486,11 @@ void QuicStreamFactory::Job::CancelWaitForDataReadyCallback() { |
| OnIOComplete(OK); |
| } |
| +size_t QuicStreamFactory::Job::EstimateMemoryUsage() const { |
| + return base::trace_event::EstimateMemoryUsage(key_) + |
| + base::trace_event::EstimateMemoryUsage(server_info_); |
| +} |
| + |
| int QuicStreamFactory::Job::DoResolveHost() { |
| dns_resolution_start_time_ = base::TimeTicks::Now(); |
| // Start loading the data now, and wait for it after we resolve the host. |
| @@ -891,19 +911,32 @@ void QuicStreamFactory::set_quic_server_info_factory( |
| void QuicStreamFactory::DumpMemoryStats( |
| base::trace_event::ProcessMemoryDump* pmd, |
| const std::string& parent_absolute_name) const { |
| - if (all_sessions_.empty()) |
| + if (all_sessions_.empty() && active_jobs_.empty()) |
| return; |
| base::trace_event::MemoryAllocatorDump* factory_dump = |
| pmd->CreateAllocatorDump(parent_absolute_name + "/quic_stream_factory"); |
| size_t memory_estimate = |
| - base::trace_event::EstimateMemoryUsage(all_sessions_); |
| + base::trace_event::EstimateMemoryUsage(all_sessions_) + |
| + base::trace_event::EstimateMemoryUsage(active_sessions_) + |
| + base::trace_event::EstimateMemoryUsage(session_aliases_) + |
| + base::trace_event::EstimateMemoryUsage(ip_aliases_) + |
| + base::trace_event::EstimateMemoryUsage(session_peer_ip_) + |
| + base::trace_event::EstimateMemoryUsage(gone_away_aliases_) + |
| + base::trace_event::EstimateMemoryUsage(active_jobs_) + |
| + base::trace_event::EstimateMemoryUsage(job_requests_map_) + |
| + base::trace_event::EstimateMemoryUsage(active_cert_verifier_jobs_); |
| factory_dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize, |
| base::trace_event::MemoryAllocatorDump::kUnitsBytes, |
| memory_estimate); |
| - factory_dump->AddScalar( |
| - base::trace_event::MemoryAllocatorDump::kNameObjectCount, |
| - base::trace_event::MemoryAllocatorDump::kUnitsObjects, |
| - all_sessions_.size()); |
| + factory_dump->AddScalar("all_sessions", |
| + base::trace_event::MemoryAllocatorDump::kUnitsObjects, |
| + all_sessions_.size()); |
| + factory_dump->AddScalar("active_jobs", |
| + base::trace_event::MemoryAllocatorDump::kUnitsObjects, |
| + active_jobs_.size()); |
| + factory_dump->AddScalar("active_cert_jobs", |
| + base::trace_event::MemoryAllocatorDump::kUnitsObjects, |
| + active_cert_verifier_jobs_.size()); |
| } |
| bool QuicStreamFactory::CanUseExistingSession(const QuicServerId& server_id, |