MINOR: mux-quic: add buf_in_flight to QCC debug infos

Dump <buf_in_flight> QCC field both in QUIC MUX traces and "show quic".
This could help to detect if MUX does not allocate enough buffers
compared to quic_conn current congestion window.
This commit is contained in:
Amaury Denoyelle 2024-08-21 15:30:17 +02:00
parent 5c07d58e08
commit ecfedc2570
2 changed files with 11 additions and 5 deletions

View File

@ -3399,9 +3399,12 @@ static const struct mux_ops qmux_ops = {
void qcc_show_quic(struct qcc *qcc) void qcc_show_quic(struct qcc *qcc)
{ {
const struct quic_conn *qc = qcc->conn->handle.qc;
struct eb64_node *node; struct eb64_node *node;
chunk_appendf(&trash, " qcc=0x%p flags=0x%x sc=%llu hreq=%llu\n",
qcc, qcc->flags, (ullong)qcc->nb_sc, (ullong)qcc->nb_hreq); chunk_appendf(&trash, " qcc=0x%p flags=0x%x sc=%llu hreq=%llu bwnd=%llu/%llu\n",
qcc, qcc->flags, (ullong)qcc->nb_sc, (ullong)qcc->nb_hreq,
(ullong)qcc->tx.buf_in_flight, (ullong)qc->path->cwnd);
node = eb64_first(&qcc->streams_by_id); node = eb64_first(&qcc->streams_by_id);
while (node) { while (node) {

View File

@ -5,6 +5,7 @@
#include <haproxy/connection.h> #include <haproxy/connection.h>
#include <haproxy/chunk.h> #include <haproxy/chunk.h>
#include <haproxy/mux_quic.h> #include <haproxy/mux_quic.h>
#include <haproxy/quic_conn-t.h>
#include <haproxy/quic_frame-t.h> #include <haproxy/quic_frame-t.h>
/* trace source and events */ /* trace source and events */
@ -131,14 +132,16 @@ INITCALL1(STG_REGISTER, trace_register_source, TRACE_SOURCE);
void qmux_dump_qcc_info(struct buffer *msg, const struct qcc *qcc) void qmux_dump_qcc_info(struct buffer *msg, const struct qcc *qcc)
{ {
const struct quic_conn *qc = qcc->conn->handle.qc;
chunk_appendf(msg, " qcc=%p(F)", qcc); chunk_appendf(msg, " qcc=%p(F)", qcc);
if (qcc->conn->handle.qc) if (qcc->conn->handle.qc)
chunk_appendf(msg, " qc=%p", qcc->conn->handle.qc); chunk_appendf(msg, " qc=%p", qcc->conn->handle.qc);
chunk_appendf(msg, " .sc=%llu .hreq=%llu .flg=0x%04x", (ullong)qcc->nb_sc, (ullong)qcc->nb_hreq, qcc->flags); chunk_appendf(msg, " .sc=%llu .hreq=%llu .flg=0x%04x", (ullong)qcc->nb_sc, (ullong)qcc->nb_hreq, qcc->flags);
chunk_appendf(msg, " .tx=%llu %llu/%llu", (ullong)qcc->tx.fc.off_soft, chunk_appendf(msg, " .tx=%llu %llu/%llu bwnd=%llu/%llu",
(ullong)qcc->tx.fc.off_real, (ullong)qcc->tx.fc.off_soft, (ullong)qcc->tx.fc.off_real, (ullong)qcc->tx.fc.limit,
(ullong)qcc->tx.fc.limit); (ullong)qcc->tx.buf_in_flight, (ullong)qc->path->cwnd);
} }
void qmux_dump_qcs_info(struct buffer *msg, const struct qcs *qcs) void qmux_dump_qcs_info(struct buffer *msg, const struct qcs *qcs)