This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
dexter gerrit-no-reply at lists.osmocom.orgdexter has uploaded this change for review. ( https://gerrit.osmocom.org/9837
Change subject: stats: replace packet statistic counters with libosmocore rate counters
......................................................................
stats: replace packet statistic counters with libosmocore rate counters
In struct mgcp_rtp_end one finds unsigned int counters. Those should
be replaced with libosmocore rate counters
- replace packets_rx, octets_rx, packets_tx, octets_tx and
dropped_packets with libosmocore rate counters.
Change-Id: I47c5c9006df5044e59ddebb895e62adb849d72d5
Related: OS#2517
---
M include/osmocom/mgcp/mgcp_internal.h
M src/libosmo-mgcp/mgcp_conn.c
M src/libosmo-mgcp/mgcp_network.c
M src/libosmo-mgcp/mgcp_stat.c
M src/libosmo-mgcp/mgcp_vty.c
M tests/mgcp/mgcp_test.c
6 files changed, 37 insertions(+), 20 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/37/9837/1
diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h
index 1b9749d..1e0421a 100644
--- a/include/osmocom/mgcp/mgcp_internal.h
+++ b/include/osmocom/mgcp/mgcp_internal.h
@@ -101,11 +101,11 @@
struct mgcp_rtp_end {
/* statistics */
struct {
- unsigned int packets_rx;
- unsigned int octets_rx;
- unsigned int packets_tx;
- unsigned int octets_tx;
- unsigned int dropped_packets;
+ struct rate_ctr *packets_rx;
+ struct rate_ctr *octets_rx;
+ struct rate_ctr *packets_tx;
+ struct rate_ctr *octets_tx;
+ struct rate_ctr *dropped_packets;
} stats;
/* local IP address of the RTP socket */
diff --git a/src/libosmo-mgcp/mgcp_conn.c b/src/libosmo-mgcp/mgcp_conn.c
index e49559c..3943c69 100644
--- a/src/libosmo-mgcp/mgcp_conn.c
+++ b/src/libosmo-mgcp/mgcp_conn.c
@@ -34,19 +34,28 @@
enum {
IN_STREAM_ERR_TSTMP_CTR,
OUT_STREAM_ERR_TSTMP_CTR,
+ RTP_PACKETS_RX_CTR,
+ RTP_OCTETS_RX_CTR,
+ RTP_PACKETS_TX_CTR,
+ RTP_OCTETS_TX_CTR,
+ RTP_DROPPED_PACKETS_CTR
};
static const struct rate_ctr_desc rate_ctr_desc[] = {
[IN_STREAM_ERR_TSTMP_CTR] = {"stream_err_tstmp:in", "Inbound rtp-stream timestamp errors."},
[OUT_STREAM_ERR_TSTMP_CTR] = {"stream_err_tstmp:out", "Outbound rtp-stream timestamp errors."},
+ [RTP_PACKETS_RX_CTR] = {"rtp:packets_rx", "Inbound rtp packets."},
+ [RTP_OCTETS_RX_CTR] = {"rtp:octets_rx", "Inbound rtp octets."},
+ [RTP_PACKETS_TX_CTR] = {"rtp:packets_tx", "Outbound rtp packets."},
+ [RTP_OCTETS_TX_CTR] = {"rtp:octets_rx", "Outbound rtp octets."},
+ [RTP_DROPPED_PACKETS_CTR] = {"rtp:dropped", "dropped rtp packets."}
};
-
const static struct rate_ctr_group_desc rate_ctr_group_desc = {
.group_name_prefix = "conn_rtp",
.group_description = "rtp connection statistics",
.class_id = 1,
- .num_ctr = 2,
+ .num_ctr = ARRAY_SIZE(rate_ctr_desc),
.ctr_desc = rate_ctr_desc
};
@@ -121,6 +130,12 @@
conn_rtp->rate_ctr_group = rate_ctr_group_alloc(conn, &rate_ctr_group_desc, rate_ctr_index);
conn_rtp->state.in_stream.err_ts_ctr = &conn_rtp->rate_ctr_group->ctr[IN_STREAM_ERR_TSTMP_CTR];
conn_rtp->state.out_stream.err_ts_ctr = &conn_rtp->rate_ctr_group->ctr[OUT_STREAM_ERR_TSTMP_CTR];
+ conn_rtp->end.stats.packets_rx = &conn_rtp->rate_ctr_group->ctr[RTP_PACKETS_RX_CTR];
+ conn_rtp->end.stats.octets_rx = &conn_rtp->rate_ctr_group->ctr[RTP_OCTETS_RX_CTR];
+ conn_rtp->end.stats.packets_tx = &conn_rtp->rate_ctr_group->ctr[RTP_PACKETS_TX_CTR];
+ conn_rtp->end.stats.octets_tx = &conn_rtp->rate_ctr_group->ctr[RTP_OCTETS_TX_CTR];
+ conn_rtp->end.stats.dropped_packets = &conn_rtp->rate_ctr_group->ctr[RTP_DROPPED_PACKETS_CTR];
+
rate_ctr_index++;
/* Make sure codec table is reset */
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index b47b76c..2bcf4c2 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -694,7 +694,7 @@
dest_name = conn_dst->conn->name;
if (!rtp_end->output_enabled) {
- rtp_end->stats.dropped_packets += 1;
+ rate_ctr_inc(rtp_end->stats.dropped_packets);
LOGP(DRTP, LOGL_DEBUG,
"endpoint:0x%x output disabled, drop to %s %s "
"rtp_port:%u rtcp_port:%u\n",
@@ -749,8 +749,8 @@
if (len <= 0)
return len;
- conn_dst->end.stats.packets_tx += 1;
- conn_dst->end.stats.octets_tx += len;
+ rate_ctr_inc(conn_dst->end.stats.packets_tx);
+ rate_ctr_add(conn_dst->end.stats.octets_tx, len);
nbytes += len;
buflen = cont;
@@ -939,8 +939,8 @@
}
/* Increment RX statistics */
- conn->end.stats.packets_rx += 1;
- conn->end.stats.octets_rx += rc;
+ rate_ctr_inc(conn->end.stats.packets_rx);
+ rate_ctr_add(conn->end.stats.octets_rx, rc);
/* Forward a copy of the RTP data to a debug ip/port */
forward_data(fd->fd, &conn->tap_in, buf, rc);
diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c
index cc723bb..97c354a 100644
--- a/src/libosmo-mgcp/mgcp_stat.c
+++ b/src/libosmo-mgcp/mgcp_stat.c
@@ -44,8 +44,8 @@
* Make sure the sign is correct and use the biggest
* positive/negative number that fits.
*/
- *loss = *expected - end->stats.packets_rx;
- if (*expected < end->stats.packets_rx) {
+ *loss = *expected - end->stats.packets_rx->current;
+ if (*expected < end->stats.packets_rx->current) {
if (*loss > 0)
*loss = INT_MIN;
} else {
@@ -74,9 +74,9 @@
jitter = calc_jitter(&conn->state);
nchars = snprintf(str, str_len,
- "\r\nP: PS=%u, OS=%u, PR=%u, OR=%u, PL=%d, JI=%u",
- conn->end.stats.packets_tx, conn->end.stats.octets_tx,
- conn->end.stats.packets_rx, conn->end.stats.octets_rx,
+ "\r\nP: PS=%lu, OS=%lu, PR=%lu, OR=%lu, PL=%d, JI=%u",
+ conn->end.stats.packets_tx->current, conn->end.stats.octets_tx->current,
+ conn->end.stats.packets_rx->current, conn->end.stats.octets_rx->current,
ploss, jitter);
if (nchars < 0 || nchars >= str_len)
goto truncate;
diff --git a/src/libosmo-mgcp/mgcp_vty.c b/src/libosmo-mgcp/mgcp_vty.c
index a7a1feb..a579b16 100644
--- a/src/libosmo-mgcp/mgcp_vty.c
+++ b/src/libosmo-mgcp/mgcp_vty.c
@@ -161,7 +161,7 @@
vty_out(vty,
" Timestamp Errs: %lu->%lu%s"
- " Dropped Packets: %d%s"
+ " Dropped Packets: %lu%s"
" Payload Type: %d Rate: %u Channels: %d %s"
" Frame Duration: %u Frame Denominator: %u%s"
" FPP: %d Packet Duration: %u%s"
@@ -170,7 +170,7 @@
state->in_stream.err_ts_ctr->current,
state->out_stream.err_ts_ctr->current,
VTY_NEWLINE,
- end->stats.dropped_packets, VTY_NEWLINE,
+ end->stats.dropped_packets->current, VTY_NEWLINE,
codec->payload_type, codec->rate, codec->channels, VTY_NEWLINE,
codec->frame_duration_num, codec->frame_duration_den,
VTY_NEWLINE, end->frames_per_packet, end->packet_duration_ms,
diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c
index 1d2cf4a..7af1d23 100644
--- a/tests/mgcp/mgcp_test.c
+++ b/tests/mgcp/mgcp_test.c
@@ -944,15 +944,17 @@
int loss;
struct mgcp_rtp_state state;
struct mgcp_rtp_end rtp;
+ struct rate_ctr packets_rx;
memset(&state, 0, sizeof(state));
memset(&rtp, 0, sizeof(rtp));
+ rtp.stats.packets_rx = &packets_rx;
state.stats.initialized = 1;
state.stats.base_seq = pl_test_dat[i].base_seq;
state.stats.max_seq = pl_test_dat[i].max_seq;
state.stats.cycles = pl_test_dat[i].cycles;
- rtp.stats.packets_rx = pl_test_dat[i].packets;
+ rtp.stats.packets_rx->current = pl_test_dat[i].packets;
calc_loss(&state, &rtp, &expected, &loss);
if (loss != pl_test_dat[i].loss
--
To view, visit https://gerrit.osmocom.org/9837
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I47c5c9006df5044e59ddebb895e62adb849d72d5
Gerrit-Change-Number: 9837
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180703/f43cea96/attachment.htm>