Skip to content

Commit

Permalink
mon/PGMonitor: add max pgs per osd warning
Browse files Browse the repository at this point in the history
This is just like the min warning, but a max.  It should help warn users
away from having too many PGs in their cluster, which can be very
dangerous.

Signed-off-by: Sage Weil <sage@redhat.com>
  • Loading branch information
liewegas committed Nov 15, 2014
1 parent b70be56 commit 7f3dcdb
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/common/config_opts.h
Expand Up @@ -178,6 +178,7 @@ OPTION(mon_accept_timeout, OPT_FLOAT, 10.0) // on leader, if paxos update isn
OPTION(mon_pg_create_interval, OPT_FLOAT, 30.0) // no more than every 30s
OPTION(mon_pg_stuck_threshold, OPT_INT, 300) // number of seconds after which pgs can be considered inactive, unclean, or stale (see doc/control.rst under dump_stuck for more info)
OPTION(mon_pg_warn_min_per_osd, OPT_INT, 20) // min # pgs per (in) osd before we warn the admin
OPTION(mon_pg_warn_max_per_osd, OPT_INT, 500) // max # pgs per (in) osd before we warn the admin
OPTION(mon_pg_warn_max_object_skew, OPT_FLOAT, 10.0) // max skew few average in objects per pg
OPTION(mon_pg_warn_min_objects, OPT_INT, 10000) // do not warn below this object #
OPTION(mon_pg_warn_min_pool_objects, OPT_INT, 1000) // do not warn on pools below this object #
Expand Down
10 changes: 10 additions & 0 deletions src/mon/PGMonitor.cc
Expand Up @@ -2097,6 +2097,16 @@ void PGMonitor::get_health(list<pair<health_status_t,string> >& summary,
detail->push_back(make_pair(HEALTH_WARN, ss.str()));
}
}
if (num_in && g_conf->mon_pg_warn_max_per_osd > 0) {
int per = sum_pg_up / num_in;
if (per > g_conf->mon_pg_warn_max_per_osd) {
ostringstream ss;
ss << "too many PGs per OSD (" << per << " > max " << g_conf->mon_pg_warn_max_per_osd << ")";
summary.push_back(make_pair(HEALTH_WARN, ss.str()));
if (detail)
detail->push_back(make_pair(HEALTH_WARN, ss.str()));
}
}
if (!pg_map.pg_stat.empty()) {
for (ceph::unordered_map<int,pool_stat_t>::const_iterator p = pg_map.pg_pool_sum.begin();
p != pg_map.pg_pool_sum.end();
Expand Down

0 comments on commit 7f3dcdb

Please sign in to comment.