mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 06:11:32 +02:00
When digging into suspected memory leaks, it's cumbersome to count the number of allocations and free calls. Here we're adding a summary at the end of the sum of allocs minus the sum of frees, excluding realloc since we can't know how much it releases upon each call. This means that when doing many realloc+free the count may be negative but in practice there are very few reallocs so that's not a problem. Also the size/call is signed and corresponds to the average size allocated (e.g. leaked) per call. It seems to work reasonably well for now: > debug dev memstats match buf quic_conn.c:2978 P_FREE size: 1239547904 calls: 75656 size/call: 16384 buffer quic_conn.c:2960 P_ALLOC size: 1239547904 calls: 75656 size/call: 16384 buffer mux_quic.c:393 P_ALLOC size: 9112780800 calls: 556200 size/call: 16384 buffer mux_quic.c:383 P_ALLOC size: 17783193600 calls: 1085400 size/call: 16384 buffer mux_quic.c:159 P_FREE size: 8935833600 calls: 545400 size/call: 16384 buffer mux_quic.c:142 P_FREE size: 9112780800 calls: 556200 size/call: 16384 buffer h3.c:776 P_ALLOC size: 8935833600 calls: 545400 size/call: 16384 buffer quic_stream.c:166 P_FREE size: 975241216 calls: 59524 size/call: 16384 buffer quic_stream.c:127 P_FREE size: 7960592384 calls: 485876 size/call: 16384 buffer stream.c:772 P_FREE size: 8798208 calls: 537 size/call: 16384 buffer stream.c:768 P_FREE size: 2424832 calls: 148 size/call: 16384 buffer stream.c:751 P_ALLOC size: 8852062208 calls: 540287 size/call: 16384 buffer stream.c:641 P_FREE size: 8849162240 calls: 540110 size/call: 16384 buffer stream.c:640 P_FREE size: 8847360000 calls: 540000 size/call: 16384 buffer channel.h:850 P_ALLOC size: 2441216 calls: 149 size/call: 16384 buffer channel.h:850 P_ALLOC size: 5914624 calls: 361 size/call: 16384 buffer dynbuf.c:55 P_FREE size: 32768 calls: 2 size/call: 16384 buffer Total BALANCE size: 0 calls: 5606906 size/call: 0 (excl. realloc) Let's see how useful this becomes over time.
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.8%
Makefile
0.5%
Lua
0.2%
Python
0.2%