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

Unified Diff: sql/connection.cc

Issue 1283033004: [sql] Record memory usage at various periods after startup. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Naming suggestion. Created 5 years, 4 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sql/connection.cc
diff --git a/sql/connection.cc b/sql/connection.cc
index d07d425eb1721ac5b1da4c78198caac030fd4744..7355d2f9d1dc7166c4f7d8e302e5053c04e941a0 100644
--- a/sql/connection.cc
+++ b/sql/connection.cc
@@ -6,10 +6,12 @@
#include <string.h>
+#include "base/bind.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/lazy_instance.h"
#include "base/logging.h"
+#include "base/message_loop/message_loop.h"
#include "base/metrics/histogram.h"
#include "base/metrics/sparse_histogram.h"
#include "base/strings/string_split.h"
@@ -111,6 +113,21 @@ bool ValidAttachmentPoint(const char* attachment_point) {
return true;
}
+void RecordSqliteMemory10Min() {
+ const int64 used = sqlite3_memory_used();
+ UMA_HISTOGRAM_COUNTS("Sqlite.MemoryKB.TenMinutes", used / 1024);
+}
+
+void RecordSqliteMemoryHour() {
+ const int64 used = sqlite3_memory_used();
+ UMA_HISTOGRAM_COUNTS("Sqlite.MemoryKB.OneHour", used / 1024);
+}
+
+void RecordSqliteMemoryDay() {
+ const int64 used = sqlite3_memory_used();
+ UMA_HISTOGRAM_COUNTS("Sqlite.MemoryKB.OneDay", used / 1024);
+}
+
// SQLite automatically calls sqlite3_initialize() lazily, but
// sqlite3_initialize() uses double-checked locking and thus can have
// data races.
@@ -122,7 +139,26 @@ base::LazyInstance<base::Lock>::Leaky
g_sqlite_init_lock = LAZY_INSTANCE_INITIALIZER;
void InitializeSqlite() {
base::AutoLock lock(g_sqlite_init_lock.Get());
- sqlite3_initialize();
+ static bool first_call = true;
+ if (first_call) {
+ sqlite3_initialize();
+
+ // Schedule callback to record memory footprint histograms at 10m, 1h, and
+ // 1d. There may not be a message loop in tests.
+ if (base::MessageLoop::current()) {
+ base::MessageLoop::current()->PostDelayedTask(
+ FROM_HERE, base::Bind(&RecordSqliteMemory10Min),
+ base::TimeDelta::FromMinutes(10));
+ base::MessageLoop::current()->PostDelayedTask(
+ FROM_HERE, base::Bind(&RecordSqliteMemoryHour),
+ base::TimeDelta::FromHours(1));
+ base::MessageLoop::current()->PostDelayedTask(
+ FROM_HERE, base::Bind(&RecordSqliteMemoryDay),
+ base::TimeDelta::FromDays(1));
+ }
+
+ first_call = false;
+ }
}
// Helper to get the sqlite3_file* associated with the "main" database.
« 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