From: Amaury Denoyelle Date: Mon, 8 Jul 2024 08:51:42 +0000 (+0200) Subject: MINOR: quic: add counters of sent bytes with and without GSO X-Git-Tag: v3.1-dev4~99 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b0990b38f862dac337770fc9be397e6689b808d4;p=thirdparty%2Fhaproxy.git MINOR: quic: add counters of sent bytes with and without GSO Add a sent bytes counter for each quic_conn instance. A secondary field which only account bytes sent via GSO which is useful to ensure if this is activated. For the moment, these counters are reported on "show quic" but not aggregated on proxy quic module stats. --- diff --git a/include/haproxy/quic_conn-t.h b/include/haproxy/quic_conn-t.h index d9415c4872..0b33bd0268 100644 --- a/include/haproxy/quic_conn-t.h +++ b/include/haproxy/quic_conn-t.h @@ -262,6 +262,8 @@ struct quic_conn_cntrs { long long socket_full; /* total number of EAGAIN errors on sendto() calls */ long long sendto_err; /* total number of errors on sendto() calls, EAGAIN excepted */ long long sendto_err_unknown; /* total number of errors on sendto() calls which are currently not supported */ + long long sent_bytes; /* total number of sent bytes, with or without GSO */ + long long sent_bytes_gso; /* total number of sent bytes using GSO */ long long sent_pkt; /* total number of sent packets */ long long lost_pkt; /* total number of lost packets */ long long conn_migration_done; /* total number of connection migration handled */ diff --git a/src/quic_cli.c b/src/quic_cli.c index f0e147c7e7..6e9ee0c268 100644 --- a/src/quic_cli.c +++ b/src/quic_cli.c @@ -300,11 +300,14 @@ static void dump_quic_full(struct show_quic_ctx *ctx, struct quic_conn *qc) } if (ctx->fields & QUIC_DUMP_FLD_CC) { - chunk_appendf(&trash, " srtt=%-4u rttvar=%-4u rttmin=%-4u ptoc=%-4u cwnd=%-6llu" - " mcwnd=%-6llu sentpkts=%-6llu lostpkts=%-6llu reorderedpkts=%-6llu\n", + chunk_appendf(&trash, " srtt=%-4u rttvar=%-4u rttmin=%-4u ptoc=%-4u\n" + " cwnd=%-6llu mcwnd=%-6llu\n" + " sentbytes=%-12llu sentbytesgso=%-12llu sentpkts=%-6llu\n" + " lostpkts=%-6llu reorderedpkts=%-6llu\n", qc->path->loss.srtt, qc->path->loss.rtt_var, qc->path->loss.rtt_min, qc->path->loss.pto_count, (ullong)qc->path->cwnd, - (ullong)qc->path->mcwnd, (ullong)qc->cntrs.sent_pkt, (ullong)qc->path->loss.nb_lost_pkt, (ullong)qc->path->loss.nb_reordered_pkt); + (ullong)qc->path->mcwnd, (ullong)qc->cntrs.sent_bytes, (ullong)qc->cntrs.sent_bytes_gso, + (ullong)qc->cntrs.sent_pkt, (ullong)qc->path->loss.nb_lost_pkt, (ullong)qc->path->loss.nb_reordered_pkt); } if (qc->cntrs.dropped_pkt) { diff --git a/src/quic_tx.c b/src/quic_tx.c index 06c973a455..37ff14fea4 100644 --- a/src/quic_tx.c +++ b/src/quic_tx.c @@ -347,6 +347,11 @@ static int qc_send_ppkts(struct buffer *buf, struct ssl_sock_ctx *ctx) skip_sendto = 1; TRACE_ERROR("sendto error, simulate sending for the rest of data", QUIC_EV_CONN_SPPKTS, qc); } + else { + qc->cntrs.sent_bytes += ret; + if (gso && ret > gso) + qc->cntrs.sent_bytes_gso += ret; + } } b_del(buf, dglen + QUIC_DGRAM_HEADLEN);