]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge PR #37654 into master
authorPatrick Donnelly <pdonnell@redhat.com>
Thu, 5 Nov 2020 05:00:50 +0000 (21:00 -0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Thu, 5 Nov 2020 05:00:50 +0000 (21:00 -0800)
* refs/pull/37654/head:
mds: print the METRIC_TYPE for debug info
mds: add XXPayload:print support
mds: only update the requesting metrics

Reviewed-by: Venky Shankar <vshankar@redhat.com>
1  2 
src/include/cephfs/metrics/Types.h
src/mds/MDSPerfMetricTypes.h
src/mds/MetricAggregator.cc
src/mds/MetricsHandler.cc

index 5951e8ea1996daf3f5fb398a1a5a5a03016c52cc,524192b5d595ac495174dda0fd4de166eda83414..160bfa1d174e1dd12449ba2e897a6512227dd4e5
@@@ -169,51 -179,12 +183,55 @@@ struct MetadataLatencyPayload 
    void dump(Formatter *f) const {
      f->dump_int("latency", lat);
    }
+   void print(ostream *out) const {
+     *out << "latency: " << lat;
+   }
  };
  
 +struct DentryLeasePayload {
 +  static const ClientMetricType METRIC_TYPE = ClientMetricType::CLIENT_METRIC_TYPE_DENTRY_LEASE;
 +
 +  uint64_t dlease_hits = 0;
 +  uint64_t dlease_misses = 0;
 +  uint64_t nr_dentries = 0;
 +
 +  DentryLeasePayload() { }
 +  DentryLeasePayload(uint64_t dlease_hits, uint64_t dlease_misses, uint64_t nr_dentries)
 +    : dlease_hits(dlease_hits), dlease_misses(dlease_misses), nr_dentries(nr_dentries) {
 +  }
 +
 +  void encode(bufferlist &bl) const {
 +    using ceph::encode;
 +    ENCODE_START(1, 1, bl);
 +    encode(dlease_hits, bl);
 +    encode(dlease_misses, bl);
 +    encode(nr_dentries, bl);
 +    ENCODE_FINISH(bl);
 +  }
 +
 +  void decode(bufferlist::const_iterator &iter) {
 +    using ceph::decode;
 +    DECODE_START(1, iter);
 +    decode(dlease_hits, iter);
 +    decode(dlease_misses, iter);
 +    decode(nr_dentries, iter);
 +    DECODE_FINISH(iter);
 +  }
 +
 +  void dump(Formatter *f) const {
 +    f->dump_int("dlease_hits", dlease_hits);
 +    f->dump_int("dlease_misses", dlease_misses);
 +    f->dump_int("num_dentries", nr_dentries);
 +  }
 +
 +  void print(ostream *out) const {
 +    *out << "dlease_hits: " << dlease_hits << " "
 +       << "dlease_misses: " << dlease_misses << " "
 +       << "num_dentries: " << nr_dentries;
 +  }
 +};
 +
  struct UnknownPayload {
    static const ClientMetricType METRIC_TYPE = static_cast<ClientMetricType>(-1);
  
Simple merge
index 23752e90e5d64c973e677b0431785567c1f3de94,fc5e1d6ed8b9ed7d9d2e5fefd710010c0d204961..c5e6fe3bbaf087eae3c445a076ac48f34adf8d52
@@@ -115,23 -111,23 +115,29 @@@ void MetricAggregator::refresh_metrics_
        c->second = metrics.cap_hit_metric.misses;
        break;
      case MDSPerformanceCounterType::READ_LATENCY_METRIC:
-       c->first = metrics.read_latency_metric.lat.tv.tv_sec;
-       c->second = metrics.read_latency_metric.lat.tv.tv_nsec;
+       if (metrics.read_latency_metric.updated) {
+         c->first = metrics.read_latency_metric.lat.tv.tv_sec;
+         c->second = metrics.read_latency_metric.lat.tv.tv_nsec;
+       }
        break;
      case MDSPerformanceCounterType::WRITE_LATENCY_METRIC:
-       c->first = metrics.write_latency_metric.lat.tv.tv_sec;
-       c->second = metrics.write_latency_metric.lat.tv.tv_nsec;
+       if (metrics.write_latency_metric.updated) {
+         c->first = metrics.write_latency_metric.lat.tv.tv_sec;
+         c->second = metrics.write_latency_metric.lat.tv.tv_nsec;
+       }
        break;
      case MDSPerformanceCounterType::METADATA_LATENCY_METRIC:
-       c->first = metrics.metadata_latency_metric.lat.tv.tv_sec;
-       c->second = metrics.metadata_latency_metric.lat.tv.tv_nsec;
+       if (metrics.metadata_latency_metric.updated) {
+         c->first = metrics.metadata_latency_metric.lat.tv.tv_sec;
+         c->second = metrics.metadata_latency_metric.lat.tv.tv_nsec;
+       }
        break;
 +    case MDSPerformanceCounterType::DENTRY_LEASE_METRIC:
 +      if (metrics.dentry_lease_metric.updated) {
 +        c->first = metrics.dentry_lease_metric.hits;
 +        c->second = metrics.dentry_lease_metric.misses;
 +      }
 +      break;
      default:
        ceph_abort_msg("unknown counter type");
      }
index 156175aca2a4f03a177c1444442246dd22a5480e,3cec99ce8780c0bb472b14907bb5fb72467f1c09..781a41581db47d3d7a076067fd025955855e5236
@@@ -195,27 -197,11 +201,28 @@@ void MetricsHandler::handle_payload(Ses
    auto &metrics = it->second.second;
    metrics.update_type = UPDATE_TYPE_REFRESH;
    metrics.metadata_latency_metric.lat = payload.lat;
+   metrics.metadata_latency_metric.updated = true;
  }
  
 +void MetricsHandler::handle_payload(Session *session, const DentryLeasePayload &payload) {
 +  dout(20) << ": type=" << static_cast<ClientMetricType>(DentryLeasePayload::METRIC_TYPE)
 +         << ", session=" << session << ", hits=" << payload.dlease_hits << ", misses="
 +         << payload.dlease_misses << dendl;
 +
 +  auto it = client_metrics_map.find(session->info.inst);
 +  if (it == client_metrics_map.end()) {
 +    return;
 +  }
 +
 +  auto &metrics = it->second.second;
 +  metrics.update_type = UPDATE_TYPE_REFRESH;
 +  metrics.dentry_lease_metric.hits = payload.dlease_hits;
 +  metrics.dentry_lease_metric.misses = payload.dlease_misses;
 +  metrics.dentry_lease_metric.updated = true;
 +}
 +
  void MetricsHandler::handle_payload(Session *session, const UnknownPayload &payload) {
-   dout(5) << ": session=" << session << ", ignoring unknown payload" << dendl;
+   dout(5) << ": type=Unknown, session=" << session << ", ignoring unknown payload" << dendl;
  }
  
  void MetricsHandler::handle_client_metrics(const cref_t<MClientMetrics> &m) {