]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: compact leveldb on bootstrap
authorSage Weil <sage@inktank.com>
Mon, 29 Apr 2013 17:51:00 +0000 (10:51 -0700)
committerSage Weil <sage@inktank.com>
Mon, 29 Apr 2013 22:45:17 +0000 (15:45 -0700)
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 <sage@inktank.com>
src/common/config_opts.h
src/mon/Monitor.cc

index 78b98b1cc24a1001aa281f372b839ee15ce73cfe..348b1cd3fec91c6de59e0a1e665e3864695a080f 100644 (file)
@@ -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
index 405ab30597bf1ca0fb11ed5eb0cccd8951b5a86a..06030ac1e01046c0fc3e2378d07c5e581ee4fc26 100644 (file)
@@ -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();