]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: add hdd, ssd and hybrid variants for osd_snap_trim_sleep
authorNeha Ojha <nojha@redhat.com>
Wed, 26 Jun 2019 01:43:05 +0000 (18:43 -0700)
committerPrashant D <pdhange@redhat.com>
Thu, 15 Aug 2019 00:55:11 +0000 (20:55 -0400)
This is better than the earlier default, which was set to 0.

Fixes: https://tracker.ceph.com/issues/40528
Signed-off-by: Neha Ojha <nojha@redhat.com>
(cherry picked from commit 560fca12e695a817e1b7e46d365838ed871b64bd)

Conflicts:
src/osd/OSD.cc : Resolved for get_osd_snap_trim_sleep

src/common/options.cc
src/osd/OSD.cc
src/osd/OSD.h
src/osd/PrimaryLogPG.h

index 7c5b1fb68cebebf5ef60578119d80ef300d3d269..16fb1144c36db5d85892f99bf440e4f429d2acb2 100644 (file)
@@ -3305,7 +3305,19 @@ std::vector<Option> get_global_options() {
 
     Option("osd_snap_trim_sleep", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
     .set_default(0)
-    .set_description(""),
+    .set_description("Time in seconds to sleep before next snap trim"),
+
+    Option("osd_snap_trim_sleep_hdd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+    .set_default(5)
+    .set_description("Time in seconds to sleep before next snap trim for HDDs"),
+
+    Option("osd_snap_trim_sleep_ssd", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+    .set_default(0)
+    .set_description("Time in seconds to sleep before next snap trim for SSDs"),
+
+    Option("osd_snap_trim_sleep_hybrid", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
+    .set_default(2)
+    .set_description("Time in seconds to sleep before next snap trim when data is on HDD and journal is on SSD"),
 
     Option("osd_scrub_invalid_stats", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
     .set_default(true)
index 4d255a7c9db0ed8ab4a77197bce2dc906ec7b424..5255cfc843f68b6fe02e1b792b1bdef84e3e8e54 100644 (file)
@@ -2845,6 +2845,18 @@ float OSD::get_osd_delete_sleep()
   return cct->_conf.get_val<double>("osd_delete_sleep_hdd");
 }
 
+float OSD::get_osd_snap_trim_sleep()
+{
+  float osd_snap_trim_sleep = cct->_conf.get_val<double>("osd_snap_trim_sleep");
+  if (osd_snap_trim_sleep > 0)
+    return osd_snap_trim_sleep;
+  if (!store_is_rotational && !journal_is_rotational)
+    return cct->_conf.get_val<double>("osd_snap_trim_sleep_ssd");
+  if (store_is_rotational && !journal_is_rotational)
+    return cct->_conf.get_val<double>("osd_snap_trim_sleep_hybrid");
+  return cct->_conf.get_val<double>("osd_snap_trim_sleep_hdd");
+}
+
 int OSD::init()
 {
   CompatSet initial, diff;
index 450643924074ea69a6d637168c1be86738935c5d..dab173c033d9fb5769aa63b3441ddc285b73318b 100644 (file)
@@ -2304,6 +2304,7 @@ private:
 
   float get_osd_recovery_sleep();
   float get_osd_delete_sleep();
+  float get_osd_snap_trim_sleep();
 
   void probe_smart(const string& devid, ostream& ss);
 
index 70e390ae179a61e81130f83360eda24ab8507cb2..acb1a7e29182b3b31ba33d55b0a2e322b01a6860 100644 (file)
@@ -1645,10 +1645,11 @@ private:
        }
       };
       auto *pg = context< SnapTrimmer >().pg;
-      if (pg->cct->_conf->osd_snap_trim_sleep > 0) {
+      float osd_snap_trim_sleep = pg->osd->osd->get_osd_snap_trim_sleep();
+      if (osd_snap_trim_sleep > 0) {
        std::lock_guard l(pg->osd->sleep_lock);
        wakeup = pg->osd->sleep_timer.add_event_after(
-         pg->cct->_conf->osd_snap_trim_sleep,
+         osd_snap_trim_sleep,
          new OnTimer{pg, pg->get_osdmap_epoch()});
       } else {
        post_event(SnapTrimTimerReady());