]> 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>
Mon, 19 Aug 2019 01:28:07 +0000 (21:28 -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/PrimaryLogPG.h : Resolved for osd_snap_trim_sleep
src/osd/OSD.cc : Resolved in get_osd_snap_trim_sleep

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

index 5f2c4e03a352fdd2375a17445654ca924f87fbfd..648fc5837ddad9da36537348e4c3af6dbf2ce61f 100644 (file)
@@ -2872,7 +2872,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 2a2cee1121dca3703cccb8f461dde0290aa1d3a7..f15b60182c6e0231e72164a9f8a6d1fd37625c1f 100644 (file)
@@ -2373,6 +2373,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 1739c84e55f5fbf16424815f6054881e466a01ee..bb4a9367a7ee814b62bbbfaa5d5eb5795a24ce6b 100644 (file)
@@ -2214,6 +2214,7 @@ private:
 
   float get_osd_recovery_sleep();
   float get_osd_delete_sleep();
+  float get_osd_snap_trim_sleep();
 
   void probe_smart(ostream& ss);
   int probe_smart_device(const char *device, int timeout, std::string *result);
index 24ee09067acade1437a419fe436c535bd997ada5..fa46b64f7742d5250f1c42fbab7bf6ac99df393b 100644 (file)
@@ -1611,10 +1611,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) {
        Mutex::Locker 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()->get_epoch()});
       } else {
        post_event(SnapTrimTimerReady());