]>
Commit | Line | Data |
---|---|---|
f67539c2 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 <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: | |
a4b75251 TL |
36 | case MDSPerformanceCounterType::READ_IO_SIZES_METRIC: |
37 | case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC: | |
f67539c2 TL |
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: | |
a4b75251 TL |
58 | case MDSPerformanceCounterType::READ_IO_SIZES_METRIC: |
59 | case MDSPerformanceCounterType::WRITE_IO_SIZES_METRIC: | |
f67539c2 TL |
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; | |
a4b75251 TL |
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; | |
f67539c2 TL |
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 | } |