static int _bm_log_timer(unsigned int id) { /* BM_CLOCK_REALTIME */ bm_timeval_t now; unsigned long long tdiff; benchmark_timer_t *timer; if (!timer_active(id)) return 1; if(bm_get_time(&now)<0) { LM_ERR("error getting current time\n"); return -1; } timer = bm_mycfg->tindex[id]; tdiff = bm_diff_time(timer->start, &now); _bm_last_time_diff = (int)tdiff; /* What to do * - update min, max, sum * - if granularity hit: Log, reset min/max */ lock_get(timer->lock); timer->sum += tdiff; timer->last_sum += tdiff; timer->calls++; timer->global_calls++; if (tdiff < timer->last_min) timer->last_min = tdiff; if (tdiff > timer->last_max) timer->last_max = tdiff; if (tdiff < timer->global_min) timer->global_min = tdiff; if (tdiff > timer->global_max) timer->global_max = tdiff; if (bm_mycfg->granularity > 0 && timer->calls >= bm_mycfg->granularity) { LM_GEN1(bm_mycfg->loglevel, "benchmark (timer %s [%d]): %llu [" " msgs/total/min/max/avg - LR:" " %i/%lld/%lld/%lld/%f | GB: %lld/%lld/%lld/%lld/%f]\n", timer->name, id, tdiff, timer->calls, timer->last_sum, timer->last_min, timer->last_max, ((double)timer->last_sum)/bm_mycfg->granularity, timer->global_calls, timer->sum, timer->global_min, timer->global_max, ((double)timer->sum)/timer->global_calls); soft_reset_timer(timer); } lock_release(timer->lock); return 1; }
int _bm_log_timer(unsigned int id) { /* BM_CLOCK_REALTIME */ bm_timeval_t now; unsigned long long tdiff; if (!timer_active(id)) return 1; if(bm_get_time(&now)<0) { LM_ERR("error getting current time\n"); return -1; } tdiff = bm_diff_time(bm_mycfg->tindex[id]->start, &now); _bm_last_time_diff = (int)tdiff; /* What to do * - update min, max, sum * - if granularity hit: Log, reset min/max */ bm_mycfg->tindex[id]->sum += tdiff; bm_mycfg->tindex[id]->last_sum += tdiff; bm_mycfg->tindex[id]->calls++; if (tdiff < bm_mycfg->tindex[id]->last_min) bm_mycfg->tindex[id]->last_min = tdiff; if (tdiff > bm_mycfg->tindex[id]->last_max) bm_mycfg->tindex[id]->last_max = tdiff; if (tdiff < bm_mycfg->tindex[id]->global_min) bm_mycfg->tindex[id]->global_min = tdiff; if (tdiff > bm_mycfg->tindex[id]->global_max) bm_mycfg->tindex[id]->global_max = tdiff; if ((bm_mycfg->tindex[id]->calls % bm_mycfg->granularity) == 0) { LM_GEN1(bm_mycfg->loglevel, "benchmark (timer %s [%d]): %llu [" " msgs/total/min/max/avg - LR:" " %i/%llu/%llu/%llu/%f | GB: %llu/%llu/%llu/%llu/%f]\n", bm_mycfg->tindex[id]->name, id, tdiff, bm_mycfg->granularity, bm_mycfg->tindex[id]->last_sum, bm_mycfg->tindex[id]->last_min, bm_mycfg->tindex[id]->last_max, ((double)bm_mycfg->tindex[id]->last_sum)/bm_mycfg->granularity, bm_mycfg->tindex[id]->calls, bm_mycfg->tindex[id]->sum, bm_mycfg->tindex[id]->global_min, bm_mycfg->tindex[id]->global_max, ((double)bm_mycfg->tindex[id]->sum)/bm_mycfg->tindex[id]->calls); bm_mycfg->tindex[id]->last_sum = 0; bm_mycfg->tindex[id]->last_max = 0; bm_mycfg->tindex[id]->last_min = 0xffffffff; } return 1; }