]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: share purged_snaps with mgr at mimic
authorSage Weil <sage@redhat.com>
Thu, 12 Oct 2017 21:26:37 +0000 (16:26 -0500)
committerSage Weil <sage@redhat.com>
Sat, 2 Dec 2017 03:26:49 +0000 (21:26 -0600)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/options.cc
src/osd/PG.cc

index 78365c699e00730b57009bd72cef0cb7a16164a1..30de345e684fe64d1d4fb3dd3f8ecd834b9f778c 100644 (file)
@@ -2453,6 +2453,10 @@ std::vector<Option> get_global_options() {
     .set_default(.9)
     .set_description(""),
 
+    Option("osd_max_snap_prune_intervals_per_epoch", Option::TYPE_UINT, Option::LEVEL_DEV)
+    .set_default(512)
+    .set_description("Max number of snap intervals to report to mgr in pg_stat_t"),
+
     Option("osd_default_data_pool_replay_window", Option::TYPE_INT, Option::LEVEL_ADVANCED)
     .set_default(45)
     .set_description(""),
index e7eb211b98b5cac1d9be14ba637d8036af3a5129..596e320f3cb85ad60d5b1bad1c91d549fa87a86b 100644 (file)
@@ -2816,6 +2816,22 @@ void PG::publish_stats_to_osd()
   pre_publish.stats.add(unstable_stats);
   utime_t cutoff = now;
   cutoff -= cct->_conf->osd_pg_stat_report_interval_max;
+
+  if (get_osdmap()->require_osd_release >= CEPH_RELEASE_MIMIC) {
+    // share (some of) our purged_snaps via the pg_stats. limit # of intervals
+    // because we don't want to make the pg_stat_t structures too expensive.
+    unsigned max = cct->_conf->get_val<uint64_t>("osd_max_snap_prune_intervals_per_epoch");
+    unsigned num = 0;
+    auto i = info.purged_snaps.begin();
+    while (num < max && i != info.purged_snaps.end()) {
+      pre_publish.purged_snaps.insert(i.get_start(), i.get_len());
+      ++num;
+      ++i;
+    }
+    dout(20) << __func__ << " reporting purged_snaps "
+            << pre_publish.purged_snaps << dendl;
+  }
+
   if (pg_stats_publish_valid && pre_publish == pg_stats_publish &&
       info.stats.last_fresh > cutoff) {
     dout(15) << "publish_stats_to_osd " << pg_stats_publish.reported_epoch