]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/PGMonitor: set floor below which we do not warn about objects/pg 720/head
authorSage Weil <sage@inktank.com>
Tue, 15 Oct 2013 18:22:16 +0000 (11:22 -0700)
committerSage Weil <sage@inktank.com>
Tue, 15 Oct 2013 18:22:16 +0000 (11:22 -0700)
If a cluster has very few objects, do not generate warnings when the
objects/pg for a pool diverges from the cluster average.  This avoids
spurious errors when you have a relatively empty cluster and a lone pool
with a modest number of objects is too far off the (mostly meaningless)
cluster-wide average.

Also include a per-pool min so we ignore mostly-empty pools.

Fixes: #6521
Signed-off-by: Sage Weil <sage@inktank.com>
src/common/config_opts.h
src/mon/PGMonitor.cc

index 2d3f981379b8cff4a0e73314a9092a90505d6198..08c2b0b4caede5aba66c9082e5dc49e17fe7bbbf 100644 (file)
@@ -160,6 +160,8 @@ 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_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 #
 OPTION(mon_osd_full_ratio, OPT_FLOAT, .95) // what % full makes an OSD "full"
 OPTION(mon_osd_nearfull_ratio, OPT_FLOAT, .85) // what % full makes an OSD near full
 OPTION(mon_globalid_prealloc, OPT_INT, 100)   // how many globalids to prealloc
index 2881e4985e3d48fd4e586cb5d4ea7ac64d0440e0..c14872d87ef18d874bbbb102172cc331ac95f6ce 100644 (file)
@@ -1911,7 +1911,9 @@ void PGMonitor::get_health(list<pair<health_status_t,string> >& summary,
          detail->push_back(make_pair(HEALTH_WARN, ss.str()));
       }
       int average_objects_per_pg = pg_map.pg_sum.stats.sum.num_objects / pg_map.pg_stat.size();
-      if (average_objects_per_pg > 0) {
+      if (average_objects_per_pg > 0 &&
+         pg_map.pg_sum.stats.sum.num_objects >= g_conf->mon_pg_warn_min_objects &&
+         p->second.stats.sum.num_objects >= g_conf->mon_pg_warn_min_pool_objects) {
        int objects_per_pg = p->second.stats.sum.num_objects / pi->get_pg_num();
        float ratio = (float)objects_per_pg / (float)average_objects_per_pg;
        if (g_conf->mon_pg_warn_max_object_skew > 0 &&