From ee3cdaa86c03536ef42d4c2f2af702bdf650be8a Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 29 Apr 2013 10:51:00 -0700 Subject: [PATCH] mon: compact leveldb on bootstrap This is an opportunistic time to optimize our local data since we are out of quorum. It serves as a safety net for cases where leveldb's automatic compaction doesn't work quite right and lets things get out of hand. Anecdotally we have seen stores in excess of 30GB compact down to a few hundred KB. And a 9GB store compact down to 900MB in only 1 minute. Signed-off-by: Sage Weil --- src/common/config_opts.h | 1 + src/mon/Monitor.cc | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 78b98b1cc24a..348b1cd3fec9 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -125,6 +125,7 @@ OPTION(mon_data, OPT_STR, "/var/lib/ceph/mon/$cluster-$id") OPTION(mon_initial_members, OPT_STR, "") // list of initial cluster mon ids; if specified, need majority to form initial quorum and create new cluster OPTION(mon_sync_fs_threshold, OPT_INT, 5) // sync() when writing this many objects; 0 to disable. OPTION(mon_compact_on_start, OPT_BOOL, false) // compact leveldb on ceph-mon start +OPTION(mon_compact_on_bootstrap, OPT_BOOL, true) // trigger leveldb compaction on bootstrap OPTION(mon_tick_interval, OPT_INT, 5) OPTION(mon_subscribe_interval, OPT_DOUBLE, 300) OPTION(mon_osd_laggy_halflife, OPT_INT, 60*60) // (seconds) how quickly our laggy estimations decay diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index 405ab30597bf..06030ac1e010 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -634,6 +634,13 @@ void Monitor::bootstrap() reset(); + // sync store + if (g_conf->mon_compact_on_bootstrap) { + dout(10) << "bootstrap -- triggering compaction" << dendl; + store->compact(); + dout(10) << "bootstrap -- finished compaction" << dendl; + } + // singleton monitor? if (monmap->size() == 1 && rank == 0) { win_standalone_election(); -- 2.47.3