]> git.proxmox.com Git - ceph.git/blob - ceph/src/mgr/MDSPerfMetricTypes.cc
import ceph 16.2.7
[ceph.git] / ceph / src / mgr / MDSPerfMetricTypes.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #include <ostream>
5 #include "mgr/MDSPerfMetricTypes.h"
6
7 std::ostream& operator<<(std::ostream& os, const MDSPerfMetricSubKeyDescriptor &d) {
8 switch (d.type) {
9 case MDSPerfMetricSubKeyType::MDS_RANK:
10 os << "mds_rank";
11 break;
12 case MDSPerfMetricSubKeyType::CLIENT_ID:
13 os << "client_id";
14 break;
15 default:
16 os << "unknown (" << static_cast<int>(d.type) << ")";
17 }
18
19 return os << "~/" << d.regex_str << "/";
20 }
21
22 void MDSPerformanceCounterDescriptor::pack_counter(
23 const PerformanceCounter &c, bufferlist *bl) const {
24 using ceph::encode;
25 encode(c.first, *bl);
26 encode(c.second, *bl);
27 switch(type) {
28 case MDSPerformanceCounterType::CAP_HIT_METRIC:
29 case MDSPerformanceCounterType::READ_LATENCY_METRIC:
30 case MDSPerformanceCounterType::WRITE_LATENCY_METRIC:
31 case MDSPerformanceCounterType::METADATA_LATENCY_METRIC:
32 case MDSPerformanceCounterType::DENTRY_LEASE_METRIC:
33 case MDSPerformanceCounterType::OPENED_FILES_METRIC:
34 case MDSPerformanceCounterType::PINNED_ICAPS_METRIC:
35 case MDSPerformanceCounterType::OPENED_INODES_METRIC:
36 case MDSPerformanceCounterType::READ_IO_SIZES_METRIC:
37 case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC:
38 break;
39 default:
40 ceph_abort_msg("unknown counter type");
41 }
42 }
43
44 void MDSPerformanceCounterDescriptor::unpack_counter(
45 bufferlist::const_iterator& bl, PerformanceCounter *c) const {
46 using ceph::decode;
47 decode(c->first, bl);
48 decode(c->second, bl);
49 switch(type) {
50 case MDSPerformanceCounterType::CAP_HIT_METRIC:
51 case MDSPerformanceCounterType::READ_LATENCY_METRIC:
52 case MDSPerformanceCounterType::WRITE_LATENCY_METRIC:
53 case MDSPerformanceCounterType::METADATA_LATENCY_METRIC:
54 case MDSPerformanceCounterType::DENTRY_LEASE_METRIC:
55 case MDSPerformanceCounterType::OPENED_FILES_METRIC:
56 case MDSPerformanceCounterType::PINNED_ICAPS_METRIC:
57 case MDSPerformanceCounterType::OPENED_INODES_METRIC:
58 case MDSPerformanceCounterType::READ_IO_SIZES_METRIC:
59 case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC:
60 break;
61 default:
62 ceph_abort_msg("unknown counter type");
63 }
64 }
65
66 std::ostream& operator<<(std::ostream &os, const MDSPerformanceCounterDescriptor &d) {
67 switch(d.type) {
68 case MDSPerformanceCounterType::CAP_HIT_METRIC:
69 os << "cap_hit_metric";
70 break;
71 case MDSPerformanceCounterType::READ_LATENCY_METRIC:
72 os << "read_latency_metric";
73 break;
74 case MDSPerformanceCounterType::WRITE_LATENCY_METRIC:
75 os << "write_latency_metric";
76 break;
77 case MDSPerformanceCounterType::METADATA_LATENCY_METRIC:
78 os << "metadata_latency_metric";
79 break;
80 case MDSPerformanceCounterType::DENTRY_LEASE_METRIC:
81 os << "dentry_lease_metric";
82 break;
83 case MDSPerformanceCounterType::OPENED_FILES_METRIC:
84 os << "opened_files_metric";
85 break;
86 case MDSPerformanceCounterType::PINNED_ICAPS_METRIC:
87 os << "pinned_icaps_metric";
88 break;
89 case MDSPerformanceCounterType::OPENED_INODES_METRIC:
90 os << "opened_inodes_metric";
91 break;
92 case MDSPerformanceCounterType::READ_IO_SIZES_METRIC:
93 os << "read_io_sizes_metric";
94 break;
95 case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC:
96 os << "write_io_sizes_metric";
97 break;
98 }
99
100 return os;
101 }
102
103 std::ostream &operator<<(std::ostream &os, const MDSPerfMetricLimit &limit) {
104 return os << "[order_by=" << limit.order_by << ", max_count=" << limit.max_count << "]";
105 }
106
107 void MDSPerfMetricQuery::pack_counters(const PerformanceCounters &counters,
108 bufferlist *bl) const {
109 auto it = counters.begin();
110 for (auto &descriptor : performance_counter_descriptors) {
111 if (it == counters.end()) {
112 descriptor.pack_counter(PerformanceCounter(), bl);
113 } else {
114 descriptor.pack_counter(*it, bl);
115 it++;
116 }
117 }
118 }
119
120 std::ostream &operator<<(std::ostream &os, const MDSPerfMetricQuery &query) {
121 return os << "[key=" << query.key_descriptor << ", counter="
122 << query.performance_counter_descriptors << "]";
123 }