Beispiel #1
0
static void
test_rrd (void)
{
	struct grid_single_rrd_s *rrd = grid_single_rrd_create(2, 60);
	grid_single_rrd_push(rrd, 3, 0);
	grid_single_rrd_push(rrd, 1000, 0);
	grid_single_rrd_push(rrd, 2, 0);
	grid_single_rrd_destroy(rrd);
}
Beispiel #2
0
static void
_task_register(gpointer p)
{
	if (PSRV(p)->flag_noregister)
		return;

	/* Computes the avg requests rate/time */
	time_t now = oio_ext_monotonic_time () / G_TIME_SPAN_SECOND;

	grid_single_rrd_push (PSRV(p)->gsr_reqcounter, now,
			network_server_stat_getone(PSRV(p)->server,
				g_quark_from_static_string(OIO_STAT_PREFIX_REQ)));
	grid_single_rrd_push (PSRV(p)->gsr_reqtime, now,
			network_server_stat_getone(PSRV(p)->server,
				g_quark_from_static_string(OIO_STAT_PREFIX_TIME)));

	guint64 avg_counter = grid_single_rrd_get_delta(PSRV(p)->gsr_reqcounter,
			now, 4);
	guint64 avg_time = grid_single_rrd_get_delta(PSRV(p)->gsr_reqtime,
			now, 4);

	avg_counter = MACRO_COND(avg_counter != 0, avg_counter, 1);
	avg_time = MACRO_COND(avg_time != 0, avg_time, 1);

	service_tag_set_value_i64(service_info_ensure_tag(PSRV(p)->si->tags,
				"stat.total_reqpersec"), avg_counter / 4);
	service_tag_set_value_i64(service_info_ensure_tag(PSRV(p)->si->tags,
				"stat.total_avreqtime"), (avg_time)/(avg_counter));

	/* send the registration now */
	GError *err = register_namespace_service(PSRV(p)->si);
	if (err) {
		g_message("Service registration failed: (%d) %s", err->code, err->message);
		g_clear_error(&err);
	}
}