Willy Tarreau
14e256dd6b
BUG/MINOR: mux-h2: set CO_SFL_STREAMER when sending lots of data
Emeric noticed that h2 bit-rate performance was always slightly lower than h1 when the CPU is saturated. Strace showed that we were always data in 2kB chunks, corresponding to the max_record size. What's happening is that when this mechanism of dynamic record size was introduced, the STREAMER flag at the stream level was relied upon. Since all this was moved to the muxes, the flag has to be passed as an argument to the snd_buf() function, but the mux h2 did not use it despite a comment mentioning it, probably because before the multi-buf it was not easy to figure the status of the buffer. The solution here consists in checking if the mbuf is congested or not, by checking if it has more than one buffer allocated. If so we set the CO_SFL_STREAMER flag, otherwise we don't. This way moderate size exchanges continue to be made over small chunks, but downloads will be able to use the large ones. While it could be backported to all supported versions, it would be better to limit it to the last LTS, so let's do it for 2.7 and 2.6 only. This patch requires previous commit "MINOR: buffer: add br_single() to check if a buffer ring has more than one buf". (cherry picked from commit 14ea98af7392225c26afa9f97a33b913e091b02b) Signed-off-by: Christopher Faulet <cfaulet@haproxy.com> (cherry picked from commit 558ac459de1294ced755ace5efffdb7036baac58) Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - BRANCHES to understand the project's life cycle and what version to use - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)
Description
Languages
Shell
100%