OPTION(mon_reweight_min_pgs_per_osd, OPT_U64, 10) // min pgs per osd for reweight-by-pg command
OPTION(mon_reweight_min_bytes_per_osd, OPT_U64, 100*1024*1024) // min bytes per osd for reweight-by-utilization command
OPTION(mon_reweight_max_osds, OPT_INT, 4) // max osds to change per reweight-by-* command
-OPTION(mon_reweight_max_change, OPT_FLOAT, 0.05) // max change to each osd per reweight-by-* command
OPTION(mon_health_data_update_interval, OPT_FLOAT, 60.0)
OPTION(mon_health_to_clog, OPT_BOOL, true)
OPTION(mon_health_to_clog_interval, OPT_INT, 3600)
"osd", "r", "cli,rest")
COMMAND("osd reweight-by-utilization " \
"name=oload,type=CephInt,range=100,req=false " \
+ "name=max_change,type=CephFloat,req=false " \
"name=no_increasing,type=CephChoices,strings=--no-increasing,req=false " \
"name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
"reweight OSDs by utilization [overload-percentage-for-consideration, default 120]", \
"osd", "rw", "cli,rest")
COMMAND("osd reweight-by-pg " \
"name=oload,type=CephInt,range=100,req=false " \
+ "name=max_change,type=CephFloat,req=false " \
"name=no_increasing,type=CephChoices,strings=--no-increasing,req=false " \
"name=pools,type=CephPoolname,n=N,req=false " \
"name=sure,type=CephChoices,strings=--yes-i-really-mean-it,req=false", \
*/
int OSDMonitor::reweight_by_utilization(int oload, std::string& out_str,
bool by_pg, const set<int64_t> *pools,
+ float max_change,
bool no_increasing, bool sure)
{
if (oload <= 100) {
// to represent e.g. differing storage capacities
unsigned weight = osdmap.get_weight(p->first);
unsigned new_weight = (unsigned)((average_util / util) * (float)weight);
- new_weight = MAX(new_weight, weight - g_conf->mon_reweight_max_change);
+ new_weight = MAX(new_weight, weight - max_change);
if (sure) {
pending_inc.new_weight[p->first] = new_weight;
changed = true;
// assign a higher weight.. if we can.
unsigned weight = osdmap.get_weight(p->first);
unsigned new_weight = (unsigned)((average_util / util) * (float)weight);
- new_weight = MIN(new_weight, weight + g_conf->mon_reweight_max_change);
+ new_weight = MIN(new_weight, weight + max_change);
if (new_weight > 0x10000)
new_weight = 0x10000;
if (new_weight > weight) {
} else if (prefix == "osd reweight-by-utilization") {
int64_t oload;
cmd_getval(g_ceph_context, cmdmap, "oload", oload, int64_t(120));
+ float max_change;
+ cmd_getval(g_ceph_context, cmdmap, "max_change", max_change);
string no_increasing, sure;
cmd_getval(g_ceph_context, cmdmap, "no_increasing", no_increasing);
cmd_getval(g_ceph_context, cmdmap, "sure", sure);
string out_str;
err = reweight_by_utilization(oload, out_str, false, NULL,
+ max_change,
no_increasing == "--no-increasing",
sure == "--yes-i-really-mean-it");
if (err < 0) {
}
pools.insert(pool);
}
+ float max_change;
+ cmd_getval(g_ceph_context, cmdmap, "max_change", max_change);
string no_increasing, sure;
cmd_getval(g_ceph_context, cmdmap, "no_increasing", no_increasing);
cmd_getval(g_ceph_context, cmdmap, "sure", sure);
string out_str;
err = reweight_by_utilization(oload, out_str, true,
pools.empty() ? NULL : &pools,
+ max_change,
no_increasing == "--no-increasing",
sure == "--yes-i-really-mean-it");
if (err < 0) {