5 #ifndef CVMFS_STATISTICS_H_
6 #define CVMFS_STATISTICS_H_
17 #ifdef CVMFS_NAMESPACE_GUARD
18 namespace CVMFS_NAMESPACE_GUARD {
30 void Inc() { atomic_inc64(&counter_); }
31 void Dec() { atomic_dec64(&counter_); }
32 int64_t
Get() {
return atomic_read64(&counter_); }
33 void Set(
const int64_t val) { atomic_write64(&counter_, val); }
34 int64_t
Xadd(
const int64_t delta) {
return atomic_xadd64(&counter_, delta); }
38 std::string PrintKi();
40 std::string PrintMi();
41 std::string PrintRatio(
Counter divider);
42 std::string ToString();
51 inline int64_t
Xadd(
class Counter *counter,
const int64_t delta) {
52 return counter->
Xadd(delta);
70 Counter *Register(
const std::string &name,
const std::string &desc);
71 Counter *Lookup(
const std::string &name)
const;
72 std::string LookupDesc(
const std::string &name);
73 std::string PrintList(
const PrintOptions print_options);
74 std::string PrintJSON();
75 void SnapshotCounters(std::map<std::string, int64_t> *counters,
76 uint64_t *timestamp_ns);
83 atomic_init32(&refcnt);
84 atomic_inc32(&refcnt);
103 : name_major_(name_major),
statistics_(statistics) { }
106 : name_major_(statistics.name_major_ +
"." + name_sub)
110 const std::string &desc) {
115 const std::string &desc) {
117 if (result == NULL) {
118 return RegisterTemplated(name_minor, desc);
146 "Number of files added");
148 "Number of files removed");
150 "Number of files changed");
152 "n_directories_added",
"Number of directories added");
154 "n_directories_removed",
"Number of directories removed");
156 "n_directories_changed",
"Number of directories changed");
158 "Number of symlinks added");
160 "n_symlinks_removed",
"Number of symlinks removed");
162 "n_symlinks_changed",
"Number of symlinks changed");
164 "Number of bytes added");
166 "Number of bytes removed");
178 Recorder(uint32_t resolution_s, uint32_t capacity_s);
181 void TickAt(uint64_t timestamp);
182 uint64_t GetNoTicks(uint32_t retrospect_s)
const;
225 void TickAt(uint64_t timestamp);
226 uint64_t GetNoTicks(uint32_t retrospect_s)
const;
228 void AddRecorder(uint32_t resolution_s, uint32_t capacity_s);
236 #ifdef CVMFS_NAMESPACE_GUARD
240 #endif // CVMFS_STATISTICS_H_
std::map< std::string, CounterInfo * > counters_
perf::Counter * n_symlinks_added
void Dec(class Counter *counter)
Counter * Register(const std::string &name, const std::string &desc)
FsCounters(StatisticsTemplate statistics)
int64_t Xadd(class Counter *counter, const int64_t delta)
perf::Counter * n_symlinks_removed
CounterInfo(const std::string &desc)
perf::Counter * n_directories_removed
Counter * RegisterOrLookupTemplated(const std::string &name_minor, const std::string &desc)
perf::Statistics * statistics_
StatisticsTemplate(const std::string &name_sub, const StatisticsTemplate &statistics)
perf::Counter * sz_added_bytes
perf::Counter * n_symlinks_changed
perf::Counter * sz_removed_bytes
perf::Counter * n_directories_added
Counter * RegisterTemplated(const std::string &name_minor, const std::string &desc)
Counter * Lookup(const std::string &name) const
void Set(const int64_t val)
perf::Counter * n_directories_changed
std::vector< uint32_t > bins_
std::vector< Recorder > recorders_
Statistics * statistics()
void Inc(class Counter *counter)
uint32_t capacity_s() const
perf::Counter * n_files_added
int64_t Xadd(const int64_t delta)
perf::Counter * n_files_removed
uint32_t resolution_s() const
StatisticsTemplate(const std::string &name_major, Statistics *statistics)
perf::Counter * n_files_changed