mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-03-03 22:21:08 +01:00
This allows to eliminate full buffers very quickly and to recycle them much faster, resulting in higher transfer rates and lower memory usage at the same time. We just wake the tasklet up if it succeeded so that h2_process() and friends are called to finalize what needs to. For regular buffer sizes, the performance level becomes quite close to the one obtained with the zero-copy mechanism (zero-copy remains much faster with non-default buffer sizes). The memory savings are huge with default buffer size: at 64c * 100 streams on a single thread, we used to forward 4.4 Gbps of traffic using 10400 buffers. After the change, the performance reaches 5.9 Gbps with only 22-24 buffers, since they are quickly recycled. That's asaving of 160 MB of RAM. A concern was an increase in the number of syscalls but this is not the case, the numbers remained exactly the same before and after. Some experimentations were made to try to cork data and not send incomplete buffers, and that always voided these changes. One explanation might be that keeping a first buffer with only headers frames is sufficient to prevent a zero-copy of the data coming in a next snd_buf() call. This still needs to be studied anyway.
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%