level: basic
desc: The threshold IOPs capacity (at 4KiB block size) beyond which to ignore
the OSD bench results for an OSD (for rotational media)
- long_desc: This option specifies the threshold IOPS capacity for an OSD under
- which the OSD bench results can be considered for QoS calculations. Only
- considered for osd_op_queue = mclock_scheduler
+ long_desc: This option specifies the high threshold IOPS capacity for an OSD
+ below which the OSD bench results can be considered for QoS calculations.
+ Only considered when osd_op_queue = mclock_scheduler
fmt_desc: The threshold IOPS capacity (at 4KiB block size) beyond which to
- ignore OSD bench results for an OSD (for rotational media)
+ ignore OSD bench results for an OSD (for rotational media) and fall back to
+ the last valid or default IOPS capacity defined by
+ ``osd_mclock_max_capacity_iops_hdd``.
default: 500
+ see_also:
+ - osd_mclock_max_capacity_iops_hdd
+ flags:
+ - runtime
+- name: osd_mclock_iops_capacity_low_threshold_hdd
+ type: float
+ level: basic
+ desc: The threshold IOPs capacity (at 4KiB block size) below which to ignore
+ the OSD bench results for an OSD (for rotational media)
+ long_desc: This option specifies the low threshold IOPS capacity of an OSD
+ above which the OSD bench results can be considered for QoS calculations.
+ Only considered when osd_op_queue = mclock_scheduler
+ fmt_desc: The threshold IOPS capacity (at 4KiB block size) below which to
+ ignore OSD bench results for an OSD (for rotational media) and fall back to
+ the last valid or default IOPS capacity defined by
+ ``osd_mclock_max_capacity_iops_hdd``.
+ default: 50
+ see_also:
+ - osd_mclock_max_capacity_iops_hdd
flags:
- runtime
- name: osd_mclock_iops_capacity_threshold_ssd
level: basic
desc: The threshold IOPs capacity (at 4KiB block size) beyond which to ignore
the OSD bench results for an OSD (for solid state media)
- long_desc: This option specifies the threshold IOPS capacity for an OSD under
- which the OSD bench results can be considered for QoS calculations. Only
- considered for osd_op_queue = mclock_scheduler
+ long_desc: This option specifies the high threshold IOPS capacity for an OSD
+ below which the OSD bench results can be considered for QoS calculations.
+ Only considered when osd_op_queue = mclock_scheduler
fmt_desc: The threshold IOPS capacity (at 4KiB block size) beyond which to
- ignore OSD bench results for an OSD (for solid state media)
+ ignore OSD bench results for an OSD (for solid state media) and fall back to
+ the last valid or default IOPS capacity defined by
+ ``osd_mclock_max_capacity_iops_ssd``.
default: 80000
+ see_also:
+ - osd_mclock_max_capacity_iops_ssd
+ flags:
+ - runtime
+- name: osd_mclock_iops_capacity_low_threshold_ssd
+ type: float
+ level: basic
+ desc: The threshold IOPs capacity (at 4KiB block size) below which to ignore
+ the OSD bench results for an OSD (for solid state media)
+ long_desc: This option specifies the low threshold IOPS capacity for an OSD
+ above which the OSD bench results can be considered for QoS calculations.
+ Only considered when osd_op_queue = mclock_scheduler
+ fmt_desc: The threshold IOPS capacity (at 4KiB block size) below which to
+ ignore OSD bench results for an OSD (for solid state media) and fall back to
+ the last valid or default IOPS capacity defined by
+ ``osd_mclock_max_capacity_iops_ssd``.
+ default: 1000
+ see_also:
+ - osd_mclock_max_capacity_iops_ssd
flags:
- runtime
# Set to true for testing. Users should NOT set this.
<< dendl;
// Get the threshold IOPS set for the underlying hdd/ssd.
- double threshold_iops = 0.0;
+ double hi_threshold_iops = 0.0;
+ double lo_threshold_iops = 0.0;
if (store_is_rotational) {
- threshold_iops = cct->_conf.get_val<double>(
+ hi_threshold_iops = cct->_conf.get_val<double>(
"osd_mclock_iops_capacity_threshold_hdd");
+ lo_threshold_iops = cct->_conf.get_val<double>(
+ "osd_mclock_iops_capacity_low_threshold_hdd");
} else {
- threshold_iops = cct->_conf.get_val<double>(
+ hi_threshold_iops = cct->_conf.get_val<double>(
"osd_mclock_iops_capacity_threshold_ssd");
+ lo_threshold_iops = cct->_conf.get_val<double>(
+ "osd_mclock_iops_capacity_low_threshold_ssd");
}
// Persist the iops value to the MON store or throw cluster warning
- // if the measured iops exceeds the set threshold. If the iops exceed
- // the threshold, the default value is used.
- if (iops > threshold_iops) {
+ // if the measured iops is not in the threshold range. If the iops is
+ // not within the threshold range, the current/default value is retained.
+ if (iops < lo_threshold_iops || iops > hi_threshold_iops) {
clog->warn() << "OSD bench result of " << std::to_string(iops)
- << " IOPS exceeded the threshold limit of "
- << std::to_string(threshold_iops) << " IOPS for osd."
+ << " IOPS is not within the threshold limit range of "
+ << std::to_string(lo_threshold_iops) << " IOPS and "
+ << std::to_string(hi_threshold_iops) << " IOPS for osd."
<< std::to_string(whoami) << ". IOPS capacity is unchanged"
<< " at " << std::to_string(cur_iops) << " IOPS. The"
<< " recommendation is to establish the osd's IOPS capacity"