]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add XXPayload:print support
authorXiubo Li <xiubli@redhat.com>
Thu, 2 Jan 2020 07:38:45 +0000 (02:38 -0500)
committerXiubo Li <xiubli@redhat.com>
Mon, 19 Oct 2020 04:36:49 +0000 (00:36 -0400)
Provide more info in the message.print for metric payloads.

Fixes: https://tracker.ceph.com/issues/47844
Signed-off-by: Xiubo Li <xiubli@redhat.com>
src/include/cephfs/metrics/Types.h
src/messages/MClientMetrics.h

index 01f4d7ed087c13a99fcc2f840a6505d24e5d0947..524192b5d595ac495174dda0fd4de166eda83414 100644 (file)
@@ -78,6 +78,12 @@ struct CapInfoPayload {
     f->dump_int("cap_misses", cap_misses);
     f->dump_int("num_caps", nr_caps);
   }
+
+  void print(ostream *out) const {
+    *out << "cap_hits: " << cap_hits << " "
+        << "cap_misses: " << cap_misses << " "
+        << "num_caps: " << nr_caps;
+  }
 };
 
 struct ReadLatencyPayload {
@@ -107,6 +113,10 @@ struct ReadLatencyPayload {
   void dump(Formatter *f) const {
     f->dump_int("latency", lat);
   }
+
+  void print(ostream *out) const {
+    *out << "latency: " << lat;
+  }
 };
 
 struct WriteLatencyPayload {
@@ -136,6 +146,10 @@ struct WriteLatencyPayload {
   void dump(Formatter *f) const {
     f->dump_int("latency", lat);
   }
+
+  void print(ostream *out) const {
+    *out << "latency: " << lat;
+  }
 };
 
 struct MetadataLatencyPayload {
@@ -165,6 +179,10 @@ struct MetadataLatencyPayload {
   void dump(Formatter *f) const {
     f->dump_int("latency", lat);
   }
+
+  void print(ostream *out) const {
+    *out << "latency: " << lat;
+  }
 };
 
 struct UnknownPayload {
@@ -180,6 +198,9 @@ struct UnknownPayload {
 
   void dump(Formatter *f) const {
   }
+
+  void print(ostream *out) const {
+  }
 };
 
 typedef boost::variant<CapInfoPayload,
@@ -242,6 +263,23 @@ public:
     Formatter *m_formatter;
   };
 
+  class PrintPayloadVisitor : public boost::static_visitor<void> {
+  public:
+    explicit PrintPayloadVisitor(ostream *out) : _out(out) {
+    }
+
+    template <typename ClientMetricPayload>
+    inline void operator()(const ClientMetricPayload &payload) const {
+      ClientMetricType metric_type = ClientMetricPayload::METRIC_TYPE;
+      *_out << "[client_metric_type: " << metric_type;
+      payload.print(_out);
+      *_out << "]";
+    }
+
+  private:
+    ostream *_out;
+  };
+
   void encode(bufferlist &bl) const {
     boost::apply_visitor(EncodePayloadVisitor(bl), payload);
   }
@@ -277,6 +315,10 @@ public:
     apply_visitor(DumpPayloadVisitor(f), payload);
   }
 
+  void print(ostream *out) const {
+    apply_visitor(PrintPayloadVisitor(out), payload);
+  }
+
   ClientMetricPayload payload;
 };
 WRITE_CLASS_ENCODER(ClientMetricMessage);
index c348586ed89e31bbbbef0fb2b13d59df819e2a7e..85ba9df57aa9976b0c5a52a8817809b128f3fd5b 100644 (file)
@@ -29,7 +29,10 @@ public:
   }
 
   void print(ostream &out) const override {
-    out << "client_metrics";
+    out << "client_metrics ";
+    for (auto &i : updates) {
+      i.print(&out);
+    }
   }
 
   void encode_payload(uint64_t features) override {