]>
git.proxmox.com Git - ceph.git/blob - ceph/src/common/perf_counters_collection.cc
1 #include "common/perf_counters_collection.h"
2 #include "common/ceph_mutex.h"
3 #include "common/ceph_context.h"
5 namespace ceph::common
{
6 /* PerfcounterCollection hold the lock for PerfCounterCollectionImp */
7 PerfCountersCollection::PerfCountersCollection(CephContext
*cct
)
9 m_lock(ceph::make_mutex("PerfCountersCollection"))
12 PerfCountersCollection::~PerfCountersCollection()
16 void PerfCountersCollection::add(PerfCounters
*l
)
18 std::lock_guard
lck(m_lock
);
21 void PerfCountersCollection::remove(PerfCounters
*l
)
23 std::lock_guard
lck(m_lock
);
26 void PerfCountersCollection::clear()
28 std::lock_guard
lck(m_lock
);
31 bool PerfCountersCollection::reset(const std::string
&name
)
33 std::lock_guard
lck(m_lock
);
34 return perf_impl
.reset(name
);
36 void PerfCountersCollection::dump_formatted(ceph::Formatter
*f
, bool schema
,
37 const std::string
&logger
,
38 const std::string
&counter
)
40 std::lock_guard
lck(m_lock
);
41 perf_impl
.dump_formatted(f
,schema
,logger
,counter
);
43 void PerfCountersCollection::dump_formatted_histograms(ceph::Formatter
*f
, bool schema
,
44 const std::string
&logger
,
45 const std::string
&counter
)
47 std::lock_guard
lck(m_lock
);
48 perf_impl
.dump_formatted_histograms(f
,schema
,logger
,counter
);
50 void PerfCountersCollection::with_counters(std::function
<void(const PerfCountersCollectionImpl::CounterMap
&)> fn
) const
52 std::lock_guard
lck(m_lock
);
53 perf_impl
.with_counters(fn
);
55 void PerfCountersDeleter::operator()(PerfCounters
* p
) noexcept
58 cct
->get_perfcounters_collection()->remove(p
);