summaryrefslogtreecommitdiffstats
path: root/src/mgr/MDSPerfMetricCollector.h
blob: c72bce09103554482bd505f2de246008bec9b6f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
// vim: ts=8 sw=2 smarttab

#ifndef CEPH_MGR_MDS_PERF_COLLECTOR_H
#define CEPH_MGR_MDS_PERF_COLLECTOR_H

#include "mgr/MetricCollector.h"
#include "mgr/MDSPerfMetricTypes.h"

// MDS performance query class
class MDSPerfMetricCollector
  : public MetricCollector<MDSPerfMetricQuery, MDSPerfMetricLimit, MDSPerfMetricKey,
                           MDSPerfMetrics> {
private:
  std::set<mds_rank_t> delayed_ranks;
  struct timespec last_updated_mono;

  void get_delayed_ranks(std::set<mds_rank_t> *ranks);

  void get_last_updated(utime_t *ts);
public:
  MDSPerfMetricCollector(MetricListener &listener);

  void process_reports(const MetricPayload &payload) override;
  int get_counters(PerfCollector *collector) override;
};

#endif // CEPH_MGR_MDS_PERF_COLLECTOR_H