mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-20 12:46:56 +00:00
MINOR: quic: use real sending rate measurement
Before this patch, global sending rate was measured on the QUIC lower layer just after sendto(). This meant that all QUIC frames were accounted for, including non STREAM frames and also retransmission. To have a better reflection of the application data transferred, move the incrementation into the MUX layer. This allows to account only for STREAM frames payload on their first emission. This should be backported up to 2.6.
This commit is contained in:
parent
5529c9985e
commit
1bcb695a05
@ -5,6 +5,7 @@
|
||||
#include <haproxy/api.h>
|
||||
#include <haproxy/connection.h>
|
||||
#include <haproxy/dynbuf.h>
|
||||
#include <haproxy/freq_ctr.h>
|
||||
#include <haproxy/h3.h>
|
||||
#include <haproxy/list.h>
|
||||
#include <haproxy/ncbuf.h>
|
||||
@ -19,6 +20,7 @@
|
||||
#include <haproxy/quic_tp-t.h>
|
||||
#include <haproxy/ssl_sock-t.h>
|
||||
#include <haproxy/stconn.h>
|
||||
#include <haproxy/thread.h>
|
||||
#include <haproxy/trace.h>
|
||||
|
||||
DECLARE_POOL(pool_head_qcc, "qcc", sizeof(struct qcc));
|
||||
@ -1643,6 +1645,16 @@ void qcc_streams_sent_done(struct qcs *qcs, uint64_t data, uint64_t offset)
|
||||
b_full(&qcs->stream->buf->buf)) {
|
||||
qc_stream_buf_release(qcs->stream);
|
||||
}
|
||||
|
||||
/* Add measurement for send rate. This is done at the MUX layer
|
||||
* to account only for STREAM frames without retransmission.
|
||||
*
|
||||
* we count the total bytes sent, and the send rate for 32-byte blocks.
|
||||
* The reason for the latter is that freq_ctr are limited to 4GB and
|
||||
* that it's not enough per second.
|
||||
*/
|
||||
_HA_ATOMIC_ADD(&th_ctx->out_bytes, ret);
|
||||
update_freq_ctr(&th_ctx->out_32bps, (ret + 16) / 32);
|
||||
}
|
||||
|
||||
if (qcs->tx.offset == qcs->tx.sent_offset && !b_data(&qcs->tx.buf)) {
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include <haproxy/connection.h>
|
||||
#include <haproxy/dynbuf.h>
|
||||
#include <haproxy/fd.h>
|
||||
#include <haproxy/freq_ctr.h>
|
||||
#include <haproxy/global-t.h>
|
||||
#include <haproxy/list.h>
|
||||
#include <haproxy/listener.h>
|
||||
@ -663,13 +662,6 @@ int qc_snd_buf(struct quic_conn *qc, const struct buffer *buf, size_t sz,
|
||||
if (ret != sz)
|
||||
return 0;
|
||||
|
||||
/* we count the total bytes sent, and the send rate for 32-byte blocks.
|
||||
* The reason for the latter is that freq_ctr are limited to 4GB and
|
||||
* that it's not enough per second.
|
||||
*/
|
||||
_HA_ATOMIC_ADD(&th_ctx->out_bytes, ret);
|
||||
update_freq_ctr(&th_ctx->out_32bps, (ret + 16) / 32);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user