summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-05-17 09:26:25 -0700
committerSage Weil <sage@inktank.com>2013-05-17 09:26:25 -0700
commitd0a5d3a7f43352c485211e46ab9afc21352e6944 (patch)
tree3bda7c00e07c65478514596d9ad6cae106ba44b6
parentc80c6a032c8112eab4f80a01ea18e1fa2c7aa6ed (diff)
parent65072f2e432c212f88dc5d5b9e8034decb019103 (diff)
downloadceph-d0a5d3a7f43352c485211e46ab9afc21352e6944.tar.gz
Merge pull request #295 from ceph/wip-5077
Reviewed-by: Joao Luis <joao.luis@inktank.com>
-rw-r--r--src/common/config_opts.h1
-rw-r--r--src/mon/PGMap.cc7
-rw-r--r--src/mon/PGMap.h2
-rw-r--r--src/mon/PGMonitor.cc8
4 files changed, 18 insertions, 0 deletions
diff --git a/src/common/config_opts.h b/src/common/config_opts.h
index aa54a213fbf..776ac1c067e 100644
--- a/src/common/config_opts.h
+++ b/src/common/config_opts.h
@@ -129,6 +129,7 @@ OPTION(mon_compact_on_bootstrap, OPT_BOOL, false) // trigger leveldb compaction
OPTION(mon_compact_on_trim, OPT_BOOL, true) // compact (a prefix) when we trim old states
OPTION(mon_tick_interval, OPT_INT, 5)
OPTION(mon_subscribe_interval, OPT_DOUBLE, 300)
+OPTION(mon_delta_reset_interval, OPT_DOUBLE, 10) // seconds of inactivity before we reset the pg delta to 0
OPTION(mon_osd_laggy_halflife, OPT_INT, 60*60) // (seconds) how quickly our laggy estimations decay
OPTION(mon_osd_laggy_weight, OPT_DOUBLE, .3) // weight for new 'samples's in laggy estimations
OPTION(mon_osd_adjust_heartbeat_grace, OPT_BOOL, true) // true if we should scale based on laggy estimations
diff --git a/src/mon/PGMap.cc b/src/mon/PGMap.cc
index 36a35424a20..32ff8963a0a 100644
--- a/src/mon/PGMap.cc
+++ b/src/mon/PGMap.cc
@@ -675,6 +675,13 @@ void PGMap::recovery_summary(ostream& out) const
}
}
+void PGMap::clear_delta()
+{
+ pg_sum_delta = pool_stat_t();
+ pg_sum_deltas.clear();
+ stamp_delta = ceph_clock_now(g_ceph_context);
+}
+
void PGMap::print_summary(ostream& out) const
{
std::stringstream ss;
diff --git a/src/mon/PGMap.h b/src/mon/PGMap.h
index 4794a16f030..1d0f40e8ba2 100644
--- a/src/mon/PGMap.h
+++ b/src/mon/PGMap.h
@@ -78,6 +78,8 @@ public:
pool_stat_t pg_sum_delta;
utime_t stamp_delta;
+ void clear_delta();
+
set<pg_t> creating_pgs; // lru: front = new additions, back = recently pinged
map<int,set<pg_t> > creating_pgs_by_osd;
diff --git a/src/mon/PGMonitor.cc b/src/mon/PGMonitor.cc
index ed4833bce7a..687ef92158b 100644
--- a/src/mon/PGMonitor.cc
+++ b/src/mon/PGMonitor.cc
@@ -128,6 +128,14 @@ void PGMonitor::tick()
}
}
+ if (!pg_map.pg_sum_deltas.empty()) {
+ utime_t age = ceph_clock_now(g_ceph_context) - pg_map.stamp;
+ if (age > 2 * g_conf->mon_delta_reset_interval) {
+ dout(10) << " clearing pg_map delta (" << age << " > " << g_conf->mon_delta_reset_interval << " seconds old)" << dendl;
+ pg_map.clear_delta();
+ }
+ }
+
dout(10) << pg_map << dendl;
}