]> 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)
committerNathan Cutler <ncutler@suse.com>
Mon, 9 Dec 2019 22:16:33 +0000 (23:16 +0100)
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
src/osd/OSD.h
src/osd/PrimaryLogPG.h
- no OSD::get_osd_delete_sleep() in luminous, no OSD::get_recovery_max_active()
  in luminous
- use cct->_conf->get_val instead of cct->_conf.get_val

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

index 3969faa88e3f3c76c572d8de251abe8393991a2e..845c68d1032ce2fc0e7d8f0b88c2ab12747c5fb3 100644 (file)
@@ -2418,7 +2418,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 e61ee9571c69f3e0b38424a64cbe6cb11df07800..15137954c73d062ce322d934b148ee881e99e389 100644 (file)
@@ -2570,6 +2570,18 @@ float OSD::get_osd_recovery_sleep()
     return cct->_conf->osd_recovery_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 c8731b8f9d7073ec0c84e1805dae933489a76712..1b91b0da108f52a1af6d78aa42e0b031d515b84c 100644 (file)
@@ -2498,6 +2498,7 @@ private:
   int get_num_op_threads();
 
   float get_osd_recovery_sleep();
+  float get_osd_snap_trim_sleep();
 
 public:
   static int peek_meta(ObjectStore *store, string& magic,
index ca1a0b1d6037cf43acd4a68979c4d32400563db4..ea211a537c1976814bcf2d4f9eefcd86af040121 100644 (file)
@@ -1564,10 +1564,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->snap_sleep_lock);
        wakeup = pg->osd->snap_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());