mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-02-08 10:51:06 +01:00
The SETTINGS frame parser updates all streams' window for each INITIAL_WINDOW_SIZE setting received on the connection (like h2spec does in test 6.5.3), which can start to be expensive if repeated when there are many streams (up to 100 by default). A quick test shows that it's possible to parse only 35000 settings per second on a 3 GHz core for 100 streams, which is rather small. Given that window sizes are relative and may be negative, there's no point in pre-initializing them for each stream and update them from the settings. Instead, let's make them relative to the connection's initial window size so that any change immediately affects all streams. The only thing that remains needed is to wake up the streams that were unblocked by the update, which is now done once at the end of h2_process_demux() instead of once per setting. This now results in 5.7 million settings being processed per second, which is way better. In order to keep the change small, the h2s' mws field was renamed to "sws" for "stream window size", and an h2s_mws() function was added to add it to the connection's initial window setting and determine the window size to use when muxing. The h2c_update_all_ws() function was renamed to h2c_unblock_sfctl() since it's now only used to unblock previously blocked streams. This needs to be backported to all versions till 1.8.
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
C
98.1%
Shell
0.9%
Makefile
0.5%
Lua
0.2%
Python
0.1%