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);
107 : name_major_(statistics.name_major_ +
"." + name_sub)
112 const std::string &desc)
118 const std::string &desc)
121 if (result == NULL) {
122 return RegisterTemplated(name_minor, desc);
150 "Number of files added");
152 "Number of files removed");
154 "Number of files changed");
156 "Number of directories added");
157 n_directories_removed =
159 "Number of directories removed");
160 n_directories_changed =
162 "Number of directories changed");
164 "Number of symlinks added");
166 "Number of symlinks removed");
168 "Number of symlinks changed");
170 "Number of bytes added");
172 "Number of bytes removed");
184 Recorder(uint32_t resolution_s, uint32_t capacity_s);
187 void TickAt(uint64_t timestamp);
188 uint64_t GetNoTicks(uint32_t retrospect_s)
const;
231 void TickAt(uint64_t timestamp);
232 uint64_t GetNoTicks(uint32_t retrospect_s)
const;
234 void AddRecorder(uint32_t resolution_s, uint32_t capacity_s);
242 #ifdef CVMFS_NAMESPACE_GUARD
246 #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