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

Unified Diff: sql/sql_memory_dump_provider.cc

Issue 1327063002: [tracing] Add sqlite memory statistics to tracing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: sql/sql_memory_dump_provider.cc
diff --git a/sql/sql_memory_dump_provider.cc b/sql/sql_memory_dump_provider.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bb6d81306c000c4ba87be4784539711ac68ce1c3
--- /dev/null
+++ b/sql/sql_memory_dump_provider.cc
@@ -0,0 +1,62 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sql/sql_memory_dump_provider.h"
+
+#include "base/trace_event/memory_dump_manager.h"
+#include "base/trace_event/process_memory_dump.h"
+#include "third_party/sqlite/sqlite3.h"
+
+namespace sql {
+
+// static
+SqlMemoryDumpProvider* SqlMemoryDumpProvider::GetInstance() {
+ return base::Singleton<
+ SqlMemoryDumpProvider,
+ base::LeakySingletonTraits<SqlMemoryDumpProvider>>::get();
+}
+
+SqlMemoryDumpProvider::SqlMemoryDumpProvider() {}
+
+SqlMemoryDumpProvider::~SqlMemoryDumpProvider() {}
+
+bool SqlMemoryDumpProvider::OnMemoryDump(
+ const base::trace_event::MemoryDumpArgs& args,
+ base::trace_event::ProcessMemoryDump* pmd) {
+ int memory_used = 0;
+ int memory_high_water = 0;
+ int status = sqlite3_status(SQLITE_STATUS_MEMORY_USED, &memory_used,
+ &memory_high_water, 1 /*resetFlag */);
+ if (status != SQLITE_OK)
+ return false;
+
+ base::trace_event::MemoryAllocatorDump* dump =
+ pmd->CreateAllocatorDump("sqlite");
+ dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameSize,
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+ memory_used);
+ dump->AddScalar("malloc_high_wmark_size",
+ base::trace_event::MemoryAllocatorDump::kUnitsBytes,
+ memory_high_water);
+
+ int dummy_high_water = -1;
+ int malloc_count = -1;
+ status = sqlite3_status(SQLITE_STATUS_MALLOC_COUNT, &malloc_count,
+ &dummy_high_water, 0 /* resetFlag */);
+ if (status == SQLITE_OK) {
+ dump->AddScalar("malloc_count",
+ base::trace_event::MemoryAllocatorDump::kUnitsObjects,
+ malloc_count);
+ }
+
+ const char* system_allocator_name =
+ base::trace_event::MemoryDumpManager::GetInstance()
+ ->system_allocator_pool_name();
+ if (system_allocator_name) {
+ pmd->AddSuballocation(dump->guid(), system_allocator_name);
+ }
+ return true;
+}
+
+} // namespace sql

Powered by Google App Engine
This is Rietveld 408576698