1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
5 #include "mgr/MDSPerfMetricTypes.h"
7 std::ostream
& operator<<(std::ostream
& os
, const MDSPerfMetricSubKeyDescriptor
&d
) {
9 case MDSPerfMetricSubKeyType::MDS_RANK
:
12 case MDSPerfMetricSubKeyType::CLIENT_ID
:
16 os
<< "unknown (" << static_cast<int>(d
.type
) << ")";
19 return os
<< "~/" << d
.regex_str
<< "/";
22 void MDSPerformanceCounterDescriptor::pack_counter(
23 const PerformanceCounter
&c
, bufferlist
*bl
) const {
26 encode(c
.second
, *bl
);
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
:
40 ceph_abort_msg("unknown counter type");
44 void MDSPerformanceCounterDescriptor::unpack_counter(
45 bufferlist::const_iterator
& bl
, PerformanceCounter
*c
) const {
48 decode(c
->second
, bl
);
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
:
62 ceph_abort_msg("unknown counter type");
66 std::ostream
& operator<<(std::ostream
&os
, const MDSPerformanceCounterDescriptor
&d
) {
68 case MDSPerformanceCounterType::CAP_HIT_METRIC
:
69 os
<< "cap_hit_metric";
71 case MDSPerformanceCounterType::READ_LATENCY_METRIC
:
72 os
<< "read_latency_metric";
74 case MDSPerformanceCounterType::WRITE_LATENCY_METRIC
:
75 os
<< "write_latency_metric";
77 case MDSPerformanceCounterType::METADATA_LATENCY_METRIC
:
78 os
<< "metadata_latency_metric";
80 case MDSPerformanceCounterType::DENTRY_LEASE_METRIC
:
81 os
<< "dentry_lease_metric";
83 case MDSPerformanceCounterType::OPENED_FILES_METRIC
:
84 os
<< "opened_files_metric";
86 case MDSPerformanceCounterType::PINNED_ICAPS_METRIC
:
87 os
<< "pinned_icaps_metric";
89 case MDSPerformanceCounterType::OPENED_INODES_METRIC
:
90 os
<< "opened_inodes_metric";
92 case MDSPerformanceCounterType::READ_IO_SIZES_METRIC
:
93 os
<< "read_io_sizes_metric";
95 case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC
:
96 os
<< "write_io_sizes_metric";
103 std::ostream
&operator<<(std::ostream
&os
, const MDSPerfMetricLimit
&limit
) {
104 return os
<< "[order_by=" << limit
.order_by
<< ", max_count=" << limit
.max_count
<< "]";
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
);
114 descriptor
.pack_counter(*it
, bl
);
120 std::ostream
&operator<<(std::ostream
&os
, const MDSPerfMetricQuery
&query
) {
121 return os
<< "[key=" << query
.key_descriptor
<< ", counter="
122 << query
.performance_counter_descriptors
<< "]";