feat: add average rtt statistics counter

This commit is contained in:
eeff
2022-09-14 16:44:53 +08:00
parent 00a934453e
commit da2dce252a
3 changed files with 19 additions and 0 deletions
+14
View File
@@ -88,6 +88,8 @@ neu_adapter_t *neu_adapter_create(neu_adapter_info_t *info)
adapter->persister = neu_persister_create("persistence");
assert(adapter->persister != NULL);
adapter->stat.avg_rtt = NEU_NODE_STAT_RTT_MAX;
rv = nng_pair1_open(&adapter->sock);
assert(rv == 0);
nng_socket_set_int(adapter->sock, NNG_OPT_RECVBUF, 128);
@@ -184,6 +186,18 @@ static void adapter_stat_acc(neu_adapter_t *adapter, neu_node_stat_e s,
case NEU_NODE_STAT_MSGS_RECV:
adapter->stat.msgs_recv += n;
break;
case NEU_NODE_STAT_AVG_RTT: {
if (NEU_NODE_STAT_RTT_MAX <= n ||
adapter->stat.avg_rtt == NEU_NODE_STAT_RTT_MAX) {
adapter->stat.avg_rtt = n;
break;
}
// exponential moving average with alpha = 0.3
const double a = 0.3;
adapter->stat.avg_rtt = adapter->stat.avg_rtt * (1 - a) + n * a;
break;
}
// these are maintained by neuron core
case NEU_NODE_STAT_TAG_TOT_CNT:
+1
View File
@@ -60,6 +60,7 @@ struct neu_adapter {
uint64_t bytes_recv; // number of bytes received over network
uint64_t msgs_sent; // number of messages sent
uint64_t msgs_recv; // number of messages received
uint64_t avg_rtt; // average round trip time in milliseconds
uint64_t tag_tot_cnt; // number of tag read including errors
uint64_t tag_err_cnt; // number of tag read errors
};