MT#55283 convert graphite to int64_t

Change-Id: Ifeb8e560716330a5c3e573a355a90a46c3f68f30
pull/1938/head
Richard Fuchs 8 months ago
parent c59864d3d8
commit 5dd2b5bb74

@ -66,8 +66,7 @@ unsigned int call_socket_cpu_affinity = 0;
/**
* locally needed static declarations
*/
static struct timeval add_ongoing_calls_dur_in_interval(struct timeval *interval_start,
struct timeval *interval_duration);
static int64_t add_ongoing_calls_dur_in_interval(int64_t interval_start, int64_t interval_duration);
static void __call_free(call_t *p);
static void __call_cleanup(call_t *c);
static void __monologue_stop(struct call_monologue *ml);
@ -3947,16 +3946,16 @@ out:
return rtp_pt; /* may be NULL */
}
void add_total_calls_duration_in_interval(struct timeval *interval_tv) {
struct timeval ongoing_calls_dur = add_ongoing_calls_dur_in_interval(
&rtpe_latest_graphite_interval_start, interval_tv);
RTPE_STATS_ADD(total_calls_duration_intv, timeval_us(ongoing_calls_dur));
void add_total_calls_duration_in_interval(int64_t interval_tv) {
int64_t ongoing_calls_dur = add_ongoing_calls_dur_in_interval(
rtpe_latest_graphite_interval_start, interval_tv);
RTPE_STATS_ADD(total_calls_duration_intv, ongoing_calls_dur);
}
static struct timeval add_ongoing_calls_dur_in_interval(struct timeval *interval_start,
struct timeval *interval_duration)
static int64_t add_ongoing_calls_dur_in_interval(int64_t interval_start,
int64_t interval_duration)
{
struct timeval call_duration, res = {0};
int64_t call_duration, res = 0;
struct call_monologue *ml;
ITERATE_CALL_LIST_START(CALL_ITERATOR_GRAPHITE, call);
@ -3964,11 +3963,11 @@ static struct timeval add_ongoing_calls_dur_in_interval(struct timeval *interval
if (!call->monologues.head || IS_FOREIGN_CALL(call))
goto next;
ml = call->monologues.head->data;
if (timercmp(interval_start, &ml->started, >)) {
res = timeval_add(res, *interval_duration);
if (interval_start > timeval_us(ml->started)) {
res += interval_duration;
} else {
call_duration = timeval_subtract(timeval_from_us(rtpe_now), ml->started);
res = timeval_add(res, call_duration);
call_duration = rtpe_now - timeval_us(ml->started);
res += call_duration;
}
next:
;

@ -18,7 +18,7 @@
#include "statistics.h"
#include "main.h"
struct timeval rtpe_latest_graphite_interval_start;
int64_t rtpe_latest_graphite_interval_start;
static socket_t graphite_sock;
static int connection_state = STATE_DISCONNECTED;
@ -26,7 +26,7 @@ static int connection_state = STATE_DISCONNECTED;
static time_t next_run;
// HEAD: static time_t rtpe_now, next_run;
static char* graphite_prefix = NULL;
static struct timeval graphite_interval_tv;
static int64_t graphite_interval_tv;
struct global_stats_counter rtpe_stats_graphite_diff; // per-interval increases
static struct global_stats_counter rtpe_stats_graphite_intv; // copied out when graphite stats run
@ -44,8 +44,8 @@ static struct global_stats_sampled rtpe_sampled_graphite_min_max_intv;
struct global_sampled_avg rtpe_sampled_graphite_avg;
void set_graphite_interval_tv(struct timeval *tv) {
graphite_interval_tv = *tv;
void set_graphite_interval_tv(int64_t tv) {
graphite_interval_tv = tv;
}
void set_prefix(char* prefix) {
@ -89,8 +89,8 @@ static int connect_to_graphite_server(const endpoint_t *graphite_ep) {
GString *print_graphite_data(void) {
int64_t time_diff_us = timeval_diff(timeval_from_us(rtpe_now), rtpe_latest_graphite_interval_start);
rtpe_latest_graphite_interval_start = timeval_from_us(rtpe_now);
int64_t time_diff_us = rtpe_now - rtpe_latest_graphite_interval_start;
rtpe_latest_graphite_interval_start = rtpe_now;
stats_counters_calc_diff(rtpe_stats, &rtpe_stats_graphite_intv, &rtpe_stats_graphite_diff);
stats_rate_min_max_avg_sample(&rtpe_rate_graphite_min_max, &rtpe_rate_graphite_min_max_avg_sampled,
@ -133,13 +133,13 @@ GString *print_graphite_data(void) {
}
GPF("call_dur %.6f", (double) atomic64_get_na(&rtpe_stats_graphite_diff.total_calls_duration_intv) / 1000000.0);
struct timeval avg_duration;
int64_t avg_duration;
uint64_t managed_sess = atomic64_get_na(&rtpe_stats_graphite_diff.managed_sess);
if (managed_sess)
avg_duration = timeval_from_us(atomic64_get_na(&rtpe_stats_graphite_diff.call_duration) / managed_sess);
avg_duration = atomic64_get_na(&rtpe_stats_graphite_diff.call_duration) / managed_sess;
else
avg_duration = (struct timeval) {0,0};
GPF("average_call_dur %llu.%06llu",(unsigned long long)avg_duration.tv_sec,(unsigned long long)avg_duration.tv_usec);
avg_duration = 0;
GPF("average_call_dur %" PRId64 ".%06" PRId64, avg_duration / 1000000, avg_duration % 1000000);
GPF("forced_term_sess %" PRIu64, atomic64_get_na(&rtpe_stats_graphite_diff.forced_term_sess));
GPF("managed_sess %" PRIu64, atomic64_get_na(&rtpe_stats->managed_sess));
GPF("managed_sess_min %" PRIu64, atomic64_get_na(&rtpe_gauge_graphite_min_max_sampled.min.total_sessions));
@ -317,7 +317,7 @@ static void graphite_loop_run(endpoint_t *graphite_ep, int seconds) {
}
if (graphite_sock.fd >= 0 && connection_state == STATE_CONNECTED) {
add_total_calls_duration_in_interval(&graphite_interval_tv);
add_total_calls_duration_in_interval(graphite_interval_tv);
rtpe_now = now_us();
rc = send_graphite_data();

@ -1566,11 +1566,8 @@ static void init_everything(charp_ht templates) {
}
static void create_everything(void) {
struct timeval tmp_tv;
rtpe_now = now_us();
// either one global poller, or one per thread for media sockets plus one for control sockets
#ifdef HAVE_LIBURING
if (rtpe_config.common.io_uring) {
@ -1692,10 +1689,8 @@ static void create_everything(void) {
rtcp_init(); // must come after Homer init
init_ng_tracing(); // must come after Homer init
gettimeofday(&rtpe_latest_graphite_interval_start, NULL);
tmp_tv = timeval_from_us((long long) rtpe_config.graphite_interval*1000000);
set_graphite_interval_tv(&tmp_tv);
rtpe_latest_graphite_interval_start = now_us();
set_graphite_interval_tv(rtpe_config.graphite_interval * 1000000LL);
if (!media_player_preload_files(rtpe_config.preload_media_files))
die("Failed to preload media files");

@ -892,7 +892,7 @@ void update_init_monologue_subscribers(struct call_monologue *ml, enum ng_opmode
int call_stream_address(GString *, struct packet_stream *ps, enum stream_address_format format,
const struct local_intf *ifa, bool keep_unspec);
void add_total_calls_duration_in_interval(struct timeval *interval_tv);
void add_total_calls_duration_in_interval(int64_t interval_tv);
enum thread_looper_action call_timer(void);
void __rtp_stats_update(rtp_stats_ht dst, struct codec_store *);

@ -9,7 +9,7 @@ enum connection_state {
STATE_CONNECTED,
};
extern struct timeval rtpe_latest_graphite_interval_start;
extern int64_t rtpe_latest_graphite_interval_start;
extern struct global_stats_counter rtpe_stats_graphite_diff; // per-interval increases
extern struct global_rate_min_max rtpe_rate_graphite_min_max; // running min/max, reset when graphite runs
@ -26,8 +26,8 @@ extern struct global_sampled_avg rtpe_sampled_graphite_avg; // updated once pe
void set_prefix(char* prefix);
void free_prefix(void);
void graphite_loop(void *d);
void set_latest_graphite_interval_start(struct timeval *tv);
void set_graphite_interval_tv(struct timeval *tv);
void set_latest_graphite_interval_start(int64_t tv);
void set_graphite_interval_tv(int64_t tv);
GString *print_graphite_data(void);

@ -6029,10 +6029,9 @@ int main(void) {
"}\n");
struct timeval graphite_interval_tv = {100,0};
rtpe_now = 200 * 1000000LL;
add_total_calls_duration_in_interval(&graphite_interval_tv);
add_total_calls_duration_in_interval(100 * 1000000LL);
graph_str = print_graphite_data();
assert_g_string_eq(graph_str,

Loading…
Cancel
Save