TT#101150 add min/max/avg tracking for gauge stats

Change-Id: I6a682f2bb98673361a8454f419f8a0fb7d37ef75
pull/1373/head
Richard Fuchs 4 years ago
parent b4295684a5
commit f5f29e1c59

@ -64,6 +64,8 @@ struct xmlrpc_helper {
struct global_stats_gauge rtpe_stats_gauge;
struct global_stats_gauge_min_max rtpe_stats_gauge_graphite_min_max;
struct global_stats_ax rtpe_stats;
struct global_stats_counter rtpe_stats_interval;
struct global_stats_counter rtpe_stats_cumulative;

@ -542,14 +542,17 @@ extern GHashTable *rtpe_callhash;
extern struct call_iterator_list rtpe_call_iterators[NUM_CALL_ITERATORS];
extern struct global_stats_gauge rtpe_stats_gauge;
extern struct global_stats_gauge_min_max rtpe_stats_gauge_graphite_min_max;
#define RTPE_GAUGE_SET(field, num) \
do { \
atomic64_set(&rtpe_stats_gauge.field, num); \
RTPE_GAUGE_SET_MIN_MAX(field, rtpe_stats_gauge_graphite_min_max, num); \
} while (0)
#define RTPE_GAUGE_ADD(field, num) \
do { \
atomic64_add(&rtpe_stats_gauge.field, num); \
uint64_t __old = atomic64_add(&rtpe_stats_gauge.field, num); \
RTPE_GAUGE_SET_MIN_MAX(field, rtpe_stats_gauge_graphite_min_max, __old + num); \
} while (0)
#define RTPE_GAUGE_INC(field) RTPE_GAUGE_ADD(field, 1)
#define RTPE_GAUGE_DEC(field) RTPE_GAUGE_ADD(field, -1)

@ -26,6 +26,13 @@ struct global_stats_gauge {
#undef F
};
struct global_stats_gauge_min_max {
struct global_stats_gauge min;
struct global_stats_gauge max;
struct global_stats_gauge avg; // sum while accumulation is running
struct global_stats_gauge count;
};
// "counter" style stats that are incremental and are kept cumulative or per-interval
struct global_stats_counter {
#define F(x) atomic64 x;
@ -177,6 +184,14 @@ INLINE void stats_counters_min_max_reset(struct global_stats_min_max *mm, struct
#undef F
}
#define RTPE_GAUGE_SET_MIN_MAX(field, min_max_struct, val) \
do { \
atomic64_min(&min_max_struct.min.field, val); \
atomic64_max(&min_max_struct.max.field, val); \
atomic64_add(&min_max_struct.avg.field, val); \
atomic64_inc(&min_max_struct.count.field); \
} while (0)
void statistics_init(void);
void statistics_free(void);

Loading…
Cancel
Save