TT#101150 update runtime averaging to microseconds

Change-Id: I2c83dfb5ca128331662058a045daf8d59397777b
pull/1373/head
Richard Fuchs 4 years ago
parent ac518471a3
commit 181dfe6b1c

@ -538,7 +538,7 @@ void call_timer(void *ptr) {
unsigned int pt;
endpoint_t ep;
struct timeval tv_start;
long long run_diff;
long long run_diff_us;
// timers are run in a single thread, so no locking required here
static struct timeval last_run;
@ -547,16 +547,12 @@ void call_timer(void *ptr) {
tv_start = rtpe_now;
// ready to start?
run_diff = timeval_diff(&tv_start, &last_run);
if (run_diff < interval)
run_diff_us = timeval_diff(&tv_start, &last_run);
if (run_diff_us < interval)
return;
last_run = tv_start;
// round up and make integer seconds
run_diff += 499999;
run_diff /= 1000000;
ZERO(hlp);
hlp.addr_sfd = g_hash_table_new(g_endpoint_hash, g_endpoint_eq);
@ -564,7 +560,7 @@ void call_timer(void *ptr) {
call_timer_iterator(c, &hlp);
ITERATE_CALL_LIST_NEXT_END(c);
stats_counters_ax_calc_avg(&rtpe_stats, run_diff);
stats_counters_ax_calc_avg(&rtpe_stats, run_diff_us);
/* update statistics regarding requests per second */
update_requests_per_second_stats(&rtpe_totalstats_interval.offers_ps, atomic64_get(&rtpe_stats.intv.offers));

@ -151,16 +151,16 @@ GQueue *statistics_gather_metrics(void);
void statistics_free_metrics(GQueue **);
const char *statistics_ng(bencode_item_t *input, bencode_item_t *output);
INLINE void stats_counters_ax_calc_avg1(atomic64 *ax_var, atomic64 *intv_var, long long run_diff) {
INLINE void stats_counters_ax_calc_avg1(atomic64 *ax_var, atomic64 *intv_var, long long run_diff_us) {
uint64_t tmp = atomic64_get_set(ax_var, 0);
atomic64_set(intv_var, tmp / run_diff);
atomic64_set(intv_var, tmp * 1000000LL / run_diff_us);
}
INLINE void stats_counters_ax_calc_avg(struct global_stats_ax *stats, long long run_diff) {
if (run_diff < 0)
run_diff = 1;
INLINE void stats_counters_ax_calc_avg(struct global_stats_ax *stats, long long run_diff_us) {
if (run_diff_us <= 0)
return;
#define F(x) stats_counters_ax_calc_avg1(&stats->ax.x, &stats->intv.x, run_diff);
#define F(x) stats_counters_ax_calc_avg1(&stats->ax.x, &stats->intv.x, run_diff_us);
#include "counter_stats_fields.inc"
#undef F
}

Loading…
Cancel
Save