Skip to content

Commit d2b910b

Browse files
committed
common/perf_counters: select_labeled_t as a parameter to dumpers
Some counters' dump functions accept 3 bool parameters to determine some dumping behavior. And multiple 'bool' parameters are considered a code smell. This is a minor refactor to replace one of these bools with a 'select_labeled_t' enum. Signed-off-by: Ronen Friedman <[email protected]>
1 parent 23a17e2 commit d2b910b

17 files changed

+91
-51
lines changed

src/common/ceph_context.cc

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -538,17 +538,18 @@ int CephContext::_do_command(
538538
std::string counter;
539539
cmd_getval(cmdmap, "logger", logger);
540540
cmd_getval(cmdmap, "counter", counter);
541-
_perf_counters_collection->dump_formatted(f, false, false, logger, counter);
541+
_perf_counters_collection->dump_formatted(f, false, select_labeled_t::unlabeled,
542+
logger, counter);
542543
}
543544
else if (command == "perfcounters_schema" || command == "2" ||
544545
command == "perf schema") {
545-
_perf_counters_collection->dump_formatted(f, true, false);
546+
_perf_counters_collection->dump_formatted(f, true, select_labeled_t::unlabeled);
546547
}
547548
else if (command == "counter dump") {
548-
_perf_counters_collection->dump_formatted(f, false, true);
549+
_perf_counters_collection->dump_formatted(f, false, select_labeled_t::labeled);
549550
}
550551
else if (command == "counter schema") {
551-
_perf_counters_collection->dump_formatted(f, true, true);
552+
_perf_counters_collection->dump_formatted(f, true, select_labeled_t::labeled);
552553
}
553554
else if (command == "perf histogram dump") {
554555
std::string logger;

src/common/perf_counters.cc

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,13 @@ void PerfCountersCollectionImpl::dump_formatted_generic(
108108
Formatter *f,
109109
bool schema,
110110
bool histograms,
111-
bool dump_labeled,
111+
select_labeled_t dump_labeled,
112112
const std::string &logger,
113113
const std::string &counter) const
114114
{
115115
f->open_object_section("perfcounter_collection");
116-
117-
if (dump_labeled) {
116+
117+
if (dump_labeled == select_labeled_t::labeled) {
118118
std::string prev_key_name;
119119
for (auto l = m_loggers.begin(); l != m_loggers.end(); ++l) {
120120
std::string_view key_name = ceph::perf_counters::key_name((*l)->get_name());
@@ -126,19 +126,28 @@ void PerfCountersCollectionImpl::dump_formatted_generic(
126126
prev_key_name = key_name;
127127

128128
f->open_array_section(key_name);
129-
(*l)->dump_formatted_generic(f, schema, histograms, true, "");
129+
(*l)->dump_formatted_generic(f, schema, histograms, select_labeled_t::labeled, "");
130130
} else {
131-
(*l)->dump_formatted_generic(f, schema, histograms, true, "");
131+
(*l)->dump_formatted_generic(f, schema, histograms, select_labeled_t::labeled, "");
132132
}
133133
}
134134
if (!m_loggers.empty()) {
135135
f->close_section(); // final array section
136136
}
137137
} else {
138-
for (auto l = m_loggers.begin(); l != m_loggers.end(); ++l) {
139-
// Optionally filter on logger name, pass through counter filter
140-
if (logger.empty() || (*l)->get_name() == logger) {
141-
(*l)->dump_formatted_generic(f, schema, histograms, false, counter);
138+
// unlabeled
139+
if (logger.empty()) {
140+
// dump all loggers
141+
for (auto& l : m_loggers) {
142+
l->dump_formatted_generic(f, schema, histograms,
143+
select_labeled_t::unlabeled, counter);
144+
}
145+
} else {
146+
// dump only specified logger
147+
auto l = m_loggers.find(logger);
148+
if (l != m_loggers.end()) {
149+
(*l)->dump_formatted_generic(f, schema, histograms,
150+
select_labeled_t::unlabeled, counter);
142151
}
143152
}
144153
}
@@ -354,10 +363,12 @@ void PerfCounters::reset()
354363
}
355364
}
356365

366+
357367
void PerfCounters::dump_formatted_generic(Formatter *f, bool schema,
358-
bool histograms, bool dump_labeled, const std::string &counter) const
368+
bool histograms, select_labeled_t dump_labeled,
369+
const std::string &counter) const
359370
{
360-
if (dump_labeled) {
371+
if (dump_labeled == select_labeled_t::labeled) {
361372
f->open_object_section(""); // should be enclosed by array
362373
f->open_object_section("labels");
363374
for (auto label : ceph::perf_counters::key_labels(m_name)) {
@@ -377,7 +388,7 @@ void PerfCounters::dump_formatted_generic(Formatter *f, bool schema,
377388

378389
f->open_object_section(m_name.c_str());
379390
}
380-
391+
381392
for (perf_counter_data_vec_t::const_iterator d = m_data.begin();
382393
d != m_data.end(); ++d) {
383394
if (!counter.empty() && counter != d->name) {
@@ -431,7 +442,7 @@ void PerfCounters::dump_formatted_generic(Formatter *f, bool schema,
431442
f->dump_string("nick", "");
432443
}
433444
f->dump_int("priority", get_adjusted_priority(d->prio));
434-
445+
435446
if (d->unit == UNIT_NONE) {
436447
f->dump_string("units", "none");
437448
} else if (d->unit == UNIT_BYTES) {
@@ -484,7 +495,7 @@ void PerfCounters::dump_formatted_generic(Formatter *f, bool schema,
484495
}
485496
}
486497
}
487-
if (dump_labeled) {
498+
if (dump_labeled == select_labeled_t::labeled) {
488499
f->close_section(); // counters
489500
}
490501
f->close_section();

src/common/perf_counters.h

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ enum unit_t : uint8_t
5454
UNIT_NONE
5555
};
5656

57+
/// Used to specify whether to dump the labeled counters
58+
enum class select_labeled_t {
59+
labeled,
60+
unlabeled
61+
};
62+
5763
/* Class for constructing a PerfCounters object.
5864
*
5965
* This class performs some validation that the parameters we have supplied are
@@ -249,13 +255,18 @@ class PerfCounters
249255
void hinc(int idx, int64_t x, int64_t y);
250256

251257
void reset();
252-
void dump_formatted(ceph::Formatter *f, bool schema, bool dump_labeled,
253-
const std::string &counter = "") const {
258+
void dump_formatted(
259+
ceph::Formatter *f,
260+
bool schema,
261+
select_labeled_t dump_labeled,
262+
const std::string &counter = "") const {
254263
dump_formatted_generic(f, schema, false, dump_labeled, counter);
255264
}
256-
void dump_formatted_histograms(ceph::Formatter *f, bool schema,
257-
const std::string &counter = "") const {
258-
dump_formatted_generic(f, schema, true, false, counter);
265+
void dump_formatted_histograms(
266+
ceph::Formatter *f,
267+
bool schema,
268+
const std::string &counter = "") const {
269+
dump_formatted_generic(f, schema, true, select_labeled_t::unlabeled, counter);
259270
}
260271
std::pair<uint64_t, uint64_t> get_tavg_ns(int idx) const;
261272

@@ -281,7 +292,7 @@ class PerfCounters
281292
PerfCounters(const PerfCounters &rhs);
282293
PerfCounters& operator=(const PerfCounters &rhs);
283294
void dump_formatted_generic(ceph::Formatter *f, bool schema, bool histograms,
284-
bool dump_labeled,
295+
select_labeled_t dump_labeled,
285296
const std::string &counter = "") const;
286297

287298
typedef std::vector<perf_counter_data_any_d> perf_counter_data_vec_t;
@@ -334,16 +345,23 @@ class PerfCountersCollectionImpl
334345
// a parameter of "all" resets all counters
335346
bool reset(std::string_view name);
336347

337-
void dump_formatted(ceph::Formatter *f, bool schema, bool dump_labeled,
338-
const std::string &logger = "",
339-
const std::string &counter = "") const {
340-
dump_formatted_generic(f, schema, false, dump_labeled, logger, counter);
348+
void dump_formatted(
349+
ceph::Formatter *f,
350+
bool schema,
351+
select_labeled_t dump_labeled,
352+
const std::string &logger = "",
353+
const std::string &counter = "") const {
354+
dump_formatted_generic(
355+
f, schema, false, dump_labeled, logger, counter);
341356
}
342357

343-
void dump_formatted_histograms(ceph::Formatter *f, bool schema,
344-
const std::string &logger = "",
345-
const std::string &counter = "") const {
346-
dump_formatted_generic(f, schema, true, false, logger, counter);
358+
void dump_formatted_histograms(
359+
ceph::Formatter *f,
360+
bool schema,
361+
const std::string &logger = "",
362+
const std::string &counter = "") const {
363+
dump_formatted_generic(
364+
f, schema, true, select_labeled_t::unlabeled, logger, counter);
347365
}
348366

349367
// A reference to a perf_counter_data_any_d, with an accompanying
@@ -361,10 +379,13 @@ class PerfCountersCollectionImpl
361379
void with_counters(std::function<void(const CounterMap &)>) const;
362380

363381
private:
364-
void dump_formatted_generic(ceph::Formatter *f, bool schema, bool histograms,
365-
bool dump_labeled,
366-
const std::string &logger = "",
367-
const std::string &counter = "") const;
382+
void dump_formatted_generic(
383+
Formatter *f,
384+
bool schema,
385+
bool histograms,
386+
select_labeled_t dump_labeled,
387+
const std::string &logger,
388+
const std::string &counter) const;
368389

369390
perf_counters_set_t m_loggers;
370391

src/common/perf_counters_collection.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ bool PerfCountersCollection::reset(const std::string &name)
3434
return perf_impl.reset(name);
3535
}
3636
void PerfCountersCollection::dump_formatted(ceph::Formatter *f, bool schema,
37-
bool dump_labeled,
37+
select_labeled_t dump_labeled,
3838
const std::string &logger,
3939
const std::string &counter)
4040
{

src/common/perf_counters_collection.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ class PerfCountersCollection
2020
void clear();
2121
bool reset(const std::string &name);
2222

23-
void dump_formatted(ceph::Formatter *f, bool schema, bool dump_labeled,
23+
void dump_formatted(ceph::Formatter *f, bool schema,
24+
select_labeled_t dump_labeled,
2425
const std::string &logger = "",
2526
const std::string &counter = "");
2627
void dump_formatted_histograms(ceph::Formatter *f, bool schema,

src/crimson/admin/osd_admin.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,8 @@ class DumpPerfCountersHook final: public AdminSocketHook {
279279
cmd_getval(cmdmap, "logger", logger);
280280
cmd_getval(cmdmap, "counter", counter);
281281

282-
crimson::common::local_perf_coll().dump_formatted(f.get(), false, false, logger, counter);
282+
crimson::common::local_perf_coll().dump_formatted(f.get(), false,
283+
select_labeled_t::unlabeled, logger, counter);
283284
return seastar::make_ready_future<tell_result_t>(std::move(f));
284285
}
285286
};

src/crimson/common/perf_counters_collection.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ PerfCountersCollectionImpl* PerfCountersCollection:: get_perf_collection()
2020
}
2121

2222
void PerfCountersCollection::dump_formatted(ceph::Formatter *f, bool schema,
23-
bool dump_labeled,
23+
select_labeled_t dump_labeled,
2424
const std::string &logger,
2525
const std::string &counter)
2626
{

src/crimson/common/perf_counters_collection.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ class PerfCountersCollection: public seastar::sharded<PerfCountersCollection>
2323
PerfCountersCollection();
2424
~PerfCountersCollection();
2525
PerfCountersCollectionImpl* get_perf_collection();
26-
void dump_formatted(ceph::Formatter *f, bool schema, bool dump_labeled,
26+
void dump_formatted(ceph::Formatter *f, bool schema,
27+
select_labeled_t dump_labeled,
2728
const std::string &logger = "",
2829
const std::string &counter = "");
2930
};

src/kv/RocksDBStore.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1469,7 +1469,7 @@ void RocksDBStore::get_statistics(Formatter *f)
14691469
f->close_section();
14701470
}
14711471
f->open_object_section("rocksdbstore_perf_counters");
1472-
logger->dump_formatted(f, false, false);
1472+
logger->dump_formatted(f, false, select_labeled_t::unlabeled);
14731473
f->close_section();
14741474
}
14751475
if (cct->_conf->rocksdb_collect_memory_stats) {

src/libcephsqlite.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -809,8 +809,8 @@ static void f_perf(sqlite3_context* ctx, int argc, sqlite3_value** argv)
809809
auto&& appd = getdata(vfs);
810810
JSONFormatter f(false);
811811
f.open_object_section("ceph_perf");
812-
appd.logger->dump_formatted(&f, false, false);
813-
appd.striper_logger->dump_formatted(&f, false, false);
812+
appd.logger->dump_formatted(&f, false, select_labeled_t::unlabeled);
813+
appd.striper_logger->dump_formatted(&f, false, select_labeled_t::unlabeled);
814814
f.close_section();
815815
{
816816
CachedStackStringStream css;

0 commit comments

Comments
 (0)