]> git.proxmox.com Git - ceph.git/blame - ceph/src/mgr/OSDPerfMetricCollector.cc
import ceph quincy 17.2.4
[ceph.git] / ceph / src / mgr / OSDPerfMetricCollector.cc
CommitLineData
11fdf7f2
TL
1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2// vim: ts=8 sw=2 smarttab
3
4#include "common/debug.h"
5#include "common/errno.h"
6
9f95a23c 7#include "messages/MMgrReport.h"
11fdf7f2
TL
8#include "OSDPerfMetricCollector.h"
9
10#define dout_context g_ceph_context
11#define dout_subsys ceph_subsys_mgr
12#undef dout_prefix
13#define dout_prefix *_dout << "mgr.osd_perf_metric_collector " << __func__ << " "
14
9f95a23c
TL
15OSDPerfMetricCollector::OSDPerfMetricCollector(MetricListener &listener)
16 : MetricCollector<OSDPerfMetricQuery,
17 OSDPerfMetricLimit,
18 OSDPerfMetricKey,
19 OSDPerfMetricReport>(listener) {
11fdf7f2
TL
20}
21
9f95a23c
TL
22void OSDPerfMetricCollector::process_reports(const MetricPayload &payload) {
23 const std::map<OSDPerfMetricQuery, OSDPerfMetricReport> &reports =
24 boost::get<OSDMetricPayload>(payload).report;
11fdf7f2 25
11fdf7f2 26 std::lock_guard locker(lock);
9f95a23c
TL
27 process_reports_generic(
28 reports, [](PerformanceCounter *counter, const PerformanceCounter &update) {
29 counter->first += update.first;
30 counter->second += update.second;
31 });
11fdf7f2 32}
f67539c2
TL
33
34int OSDPerfMetricCollector::get_counters(PerfCollector *collector) {
35 OSDPerfCollector *c = static_cast<OSDPerfCollector *>(collector);
36
37 std::lock_guard locker(lock);
38 return get_counters_generic(c->query_id, &c->counters);
39}