]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM/OPTIM: mux-quic: define a recv_list for demux resumption
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 5 Dec 2024 09:48:51 +0000 (10:48 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 18 Dec 2024 08:23:41 +0000 (09:23 +0100)
commit4b42dd4ae0d65c62d1979791b50dadd0d42774bb
tree4562d6996fa92b3737b96c601d66671bc3805845
parent0a53a008d032b69377869c8caaec38f81bdd5bd6
MEDIUM/OPTIM: mux-quic: define a recv_list for demux resumption

This commit is part of the current serie which aims to refactor and
improve overall performance of QUIC MUX I/O handler.

Define a recv_list element into qcc structure. This is used to
registered every instance of qcs which are currently blocked on
demuxing, which happen on no more space in <rx.appbuf>.

The purpose of this patch is to reduce qcc_io_recv() CPU usage. Now,
only recv_list iteration is performed, instead of the previous looping
over every qcs instances. This is useful as qcc_io_recv() is called each
time qcc_io_cb() is scheduled, even if only sending condition was the
wakeup origin.

A qcs is not inserted into recv_list immediately after blocking on demux
full buffer. Instead, this is only done after unblocking via stream
rcv_buf callback, which ensure that new buffer space is available.

This should be backported up to 3.1.
include/haproxy/mux_quic-t.h
src/mux_quic.c