]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: throttle snap trimmming with simple delay
authorSage Weil <sage@inktank.com>
Fri, 18 Apr 2014 20:50:11 +0000 (13:50 -0700)
committerSage Weil <sage@inktank.com>
Wed, 7 May 2014 21:22:21 +0000 (14:22 -0700)
This is not particularly smart, but it is *a* knob that lets you make
the snap trimmer slow down.  It's a flow and a simple delay, so it is
adjustable at runtime.  Default is 0 (no change in behavior).

Partial solution for #6278.

Signed-off-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 4413670d784efc2392359f0f22bca7c9056188f4)

src/common/config_opts.h
src/osd/ReplicatedPG.cc

index 4c9e423c911b89da1a2ad8976ff6207dfc29956a..2c65e6ca3a9b520db9ef0c194d6029abb724fe97 100644 (file)
@@ -470,6 +470,7 @@ OPTION(osd_backfill_scan_max, OPT_INT, 512)
 OPTION(osd_op_thread_timeout, OPT_INT, 15)
 OPTION(osd_recovery_thread_timeout, OPT_INT, 30)
 OPTION(osd_snap_trim_thread_timeout, OPT_INT, 60*60*1)
+OPTION(osd_snap_trim_sleep, OPT_FLOAT, 0)
 OPTION(osd_scrub_thread_timeout, OPT_INT, 60)
 OPTION(osd_scrub_finalize_thread_timeout, OPT_INT, 60*10)
 OPTION(osd_remove_thread_timeout, OPT_INT, 60*60)
index 32e76b4e8856527b28512c9ca99405d7f27ce848..2a20fb84f9e8daa175ddbad5160010d156f27054 100644 (file)
@@ -2516,7 +2516,15 @@ ReplicatedPG::RepGather *ReplicatedPG::trim_object(const hobject_t &coid)
 
 void ReplicatedPG::snap_trimmer()
 {
-  lock();
+  if (g_conf->osd_snap_trim_sleep > 0) {
+    utime_t t;
+    t.set_from_double(g_conf->osd_snap_trim_sleep);
+    t.sleep();
+    lock();
+    dout(20) << __func__ << " slept for " << t << dendl;
+  } else {
+    lock();
+  }
   if (deleting) {
     unlock();
     return;