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

Unified Diff: net/ssl/ssl_client_session_cache.cc

Issue 2541093003: Instrument SSL sockets using MemoryDumpProvider (Closed)
Patch Set: Fix flaky test Created 4 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/ssl/ssl_client_session_cache.h ('k') | net/ssl/ssl_client_session_cache_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/ssl/ssl_client_session_cache.cc
diff --git a/net/ssl/ssl_client_session_cache.cc b/net/ssl/ssl_client_session_cache.cc
index fc817fdba0b410f37294f964c63be70d6e7753c4..5fd3c481ef02777906092a07e166405f2646e408 100644
--- a/net/ssl/ssl_client_session_cache.cc
+++ b/net/ssl/ssl_client_session_cache.cc
@@ -7,9 +7,13 @@
#include <utility>
#include "base/memory/memory_coordinator_client_registry.h"
+#include "base/strings/stringprintf.h"
#include "base/time/clock.h"
#include "base/time/default_clock.h"
+#include "base/trace_event/process_memory_dump.h"
+#include "net/cert/x509_util_openssl.h"
#include "third_party/boringssl/src/include/openssl/ssl.h"
+#include "third_party/boringssl/src/include/openssl/x509.h"
namespace net {
@@ -82,6 +86,45 @@ bool SSLClientSessionCache::IsExpired(SSL_SESSION* session, time_t now) {
SSL_SESSION_get_time(session) + SSL_SESSION_get_timeout(session);
}
+void SSLClientSessionCache::DumpMemoryStats(
+ base::trace_event::ProcessMemoryDump* pmd) {
+ std::string absolute_name = "net/ssl_session_cache";
+ base::trace_event::MemoryAllocatorDump* cache_dump =
+ pmd->GetAllocatorDump(absolute_name);
+ // This method can be reached from different URLRequestContexts. Since this is
+ // a singleton, only log memory stats once.
+ // TODO(xunjieli): Change this once crbug.com/458365 is fixed.
+ if (cache_dump)
+ return;
+ cache_dump = pmd->CreateAllocatorDump(absolute_name);
+ base::AutoLock lock(lock_);
+ for (const auto& pair : cache_) {
+ auto entry = pair.second.get();
+ auto cert_chain = entry->x509_chain;
+ size_t cert_count = sk_X509_num(cert_chain);
+ base::trace_event::MemoryAllocatorDump* entry_dump =
+ pmd->CreateAllocatorDump(
+ base::StringPrintf("%s/entry_%p", absolute_name.c_str(), entry));
+ int cert_size = 0;
+ for (size_t i = 0; i < cert_count; ++i) {
+ X509* cert = sk_X509_value(cert_chain, i);
+ cert_size += i2d_X509(cert, nullptr);
+ }
+ // This measures the lower bound of the serialized certificate. It doesn't
+ // measure the actual memory used, which is 4x this amount (see
+ // crbug.com/671420 for more details).
+ entry_dump->AddScalar("cert_size",
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+ cert_size);
+ entry_dump->AddScalar("serialized_cert_count",
+ base::trace_event::MemoryAllocatorDump::kUnitsObjects,
+ cert_count);
+ entry_dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+ cert_size);
+ }
+}
+
void SSLClientSessionCache::FlushExpiredSessions() {
time_t now = clock_->Now().ToTimeT();
auto iter = cache_.begin();
« no previous file with comments | « net/ssl/ssl_client_session_cache.h ('k') | net/ssl/ssl_client_session_cache_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698