]> git.ipfire.org Git - thirdparty/rspamd.git/commit
[Feature] Use specialized pool types for long-lived and short-lived allocations
authorVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 21 Oct 2025 09:56:57 +0000 (10:56 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Tue, 21 Oct 2025 09:56:57 +0000 (10:56 +0100)
commit9416ae7f2920d8dece1366572a7c0e494ff9ba70
treee53c91ca6f093639182f8b45db18eb41eb1c2555
parent0cd32b4d45a7bd8a95472f229dc553516c18af56
[Feature] Use specialized pool types for long-lived and short-lived allocations

Replace generic rspamd_mempool_new calls with specialized variants
to optimize allocation strategies based on pool lifetime.

Long-lived pools (RSPAMD_MEMPOOL_LONG_LIVED):
- server_pool (main server context, rspamadm)
- cfg_pool (configuration, 8MB)
- Module contexts (fuzzy_check, fuzzy_backend)
- Upstream context
- Radix trees
- Maps (hash, radix, regexp - 5 instances)
- Static Lua pools (url, regexp)

Short-lived pools (RSPAMD_MEMPOOL_SHORT_LIVED):
- HTTP/controller sessions
- Task pools (message processing)
- Milter sessions
- Proxy sessions (2 instances)
- Lua parsers (HTML, email - 2 instances)
- Lua mempool creation
- Lua worker control

Benefits:
- Long-lived pools: larger initial page size, fewer reallocations
- Short-lived pools: smaller initial size, faster allocation/deallocation
- Better memory efficiency based on usage patterns
17 files changed:
src/controller.c
src/libserver/cfg_utils.cxx
src/libserver/fuzzy_backend/fuzzy_backend_sqlite.c
src/libserver/maps/map_helpers.c
src/libserver/milter.c
src/libserver/task.c
src/libutil/radix.c
src/libutil/upstream.c
src/lua/lua_mempool.c
src/lua/lua_parsers.c
src/lua/lua_regexp.c
src/lua/lua_url.c
src/lua/lua_worker.c
src/plugins/fuzzy_check.c
src/rspamadm/rspamadm.c
src/rspamd.c
src/rspamd_proxy.c