コード例 #1
0
ファイル: nc_stats.c プロジェクト: YongMan/r3proxy
void
stats_aggregate_force(struct stats *st)
{
    pthread_mutex_lock(&st->stats_mutex);
    st->aggregate = 1;
    stats_aggregate(st);

    st->updated = 1;
    stats_swap(st);
    stats_aggregate(st);

    stats_pool_reset(&st->shadow);
    stats_pool_reset(&st->current);
    pthread_mutex_unlock(&st->stats_mutex);
}
コード例 #2
0
ファイル: nc_stats.c プロジェクト: Ehuos/twemproxy
static void *
stats_loop(void *arg)
{
    struct stats *st = arg;
    int n;

    for (;;) {
        n = epoll_wait(st->ep, &st->event, 1, st->interval);
        if (n < 0) {
            if (errno == EINTR) {
                continue;
            }
            log_error("epoll wait on e %d with event m %d failed: %s",
                      st->ep, st->sd, strerror(errno));
            break;
        }

        /* aggregate stats from shadow (b) -> sum (c) */
        stats_aggregate(st);

        if (n == 0) {
            continue;
        }

        /* send aggregate stats sum (c) to collector */
        stats_send_rsp(st);
    }

    return NULL;
}
コード例 #3
0
ファイル: stats_generic.c プロジェクト: harveson/nvmalloc
void 
m_stats_threadstat_aggregate(m_stats_threadstat_t *threadstat, m_stats_statset_t *source_statset)
{
	m_stats_statset_t    *statset_all;
	m_result_t           result;


	result = stats_get_statset(threadstat->stats_table, source_statset->name, &statset_all);
	if (result != M_R_SUCCESS) {
		m_stats_statset_create(&statset_all);
		m_stats_statset_init(statset_all, source_statset->name);
		m_chhash_add(threadstat->stats_table, 
		             source_statset->name, 
		             (m_chhash_value_t) (statset_all));
	}

	
	stats_aggregate(statset_all, source_statset);
	stats_aggregate(&threadstat->summary_statset, source_statset);
}
コード例 #4
0
ファイル: generator.c プロジェクト: iitis/iitis-generator
/** Aggregate stats from all lines */
static bool _stats_aggregate_lines(struct mg *mg, stats *stats, void *arg)
{
	int i;

	for (i = 1; i < TRAFFIC_LINE_MAX; i++) {
		if (!mg->lines[i])
			continue;

		stats_aggregate(stats, mg->lines[i]->stats);
	}

	return true;
}
コード例 #5
0
ファイル: mc_thread.c プロジェクト: shantanusharma/twemcache
/*
 * Aggregator thread event loop
 */
static void
thread_aggregate_stats(int fd, short ev, void *arg)
{
    if (settings.stats_agg_intvl.tv_sec >= 0) {
        evtimer_add(&aggregator.ev, &settings.stats_agg_intvl);
        stats_aggregate();
    } else {
        /* if aggregation is turned off, come back & check in 5 seconds */
        struct timeval sleep;
        sleep.tv_sec = 5;
        sleep.tv_usec = 0;
        evtimer_add(&aggregator.ev, &sleep);
    }
}
コード例 #6
0
//合并stats信息,并接收客户端连接   通过epoll接收到客户端连接触发走到该函数
static void //可以通过客户端telnet 127.0.0.1 22222来获取
stats_loop_callback(void *arg1, void *arg2)
{//interval超时时间调用stats_loop_callback一次,或者客户端请求获取stats也会调用stats_loop_callback
    struct stats *st = arg1;
    int n = *((int *)arg2);

    /* aggregate stats from shadow (b) -> sum (c) */
    stats_aggregate(st);

    if (n == 0) {
        return;
    }

    /* send aggregate stats sum (c) to collector */
    stats_send_rsp(st);
}
コード例 #7
0
ファイル: dyn_stats.c プロジェクト: logikal/dynomite
static void
stats_loop_callback(void *arg1, void *arg2)
{
    struct stats *st = arg1;
    int n = *((int *)arg2);

    /* aggregate stats from shadow (b) -> sum (c) */
    stats_aggregate(st);

    if (n == 0) {
        return;
    }

    /* send aggregate stats sum (c) to collector */
    stats_send_rsp(st);
}
コード例 #8
0
ファイル: nc_stats.c プロジェクト: dzch/twemproxy
static void *
stats_loop(void *arg)
{
    struct stats *st = arg;
    int n;

    for (;;) {
        n = event_wait(st->st_evb, st->interval);

        /* aggregate stats from shadow (b) -> sum (c) */
        stats_aggregate(st);

        if (n == 0) {
            continue;
        }

        /* send aggregate stats sum (c) to collector */
        stats_send_rsp(st);
    }

    return NULL;
}
コード例 #9
0
ファイル: generator.c プロジェクト: iitis/iitis-generator
/** Global stats */
static bool _stats_global(struct mg *mg, stats *stats, void *arg)
{
	stats_aggregate(stats, mg->stats);
	return true;
}
コード例 #10
0
ファイル: interface.c プロジェクト: iitis/iitis-generator
static bool _stats_write_link(struct mg *mg, stats *dst, void *arg)
{
	stats_aggregate(dst, (stats *) arg);
	return true;
}
コード例 #11
0
ファイル: interface.c プロジェクト: iitis/iitis-generator
static bool _stats_write_interface(struct mg *mg, stats *dst, void *arg)
{
	stats_aggregate(dst, ((struct interface *) arg)->stats);
	return true;
}