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
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)
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;
float get_osd_recovery_sleep();
float get_osd_delete_sleep();
+ float get_osd_snap_trim_sleep();
void probe_smart(const string& devid, ostream& ss);
}
};
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());