Beispiel #1
0
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;
}
Beispiel #2
0
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;
}