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
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->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;
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,
}
};
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());