Limit remote batch size (#724)

When processing a remote batch, the system will process every single message that was available at the start of processing.
This can lead to a long pause time if there have been a considerable number of frees to this thread.

This commit introduces a new mechanism to only process messages up to a limit of 1MiB. The limit is configurable using CMake.

Choosing too small a limit can cause freeing to never catch up with the incoming messages.
This commit is contained in:
Matthew Parkinson
2025-01-07 14:29:34 +00:00
committed by GitHub
parent 35c5c6038c
commit 046c5ac766
3 changed files with 36 additions and 13 deletions

View File

@@ -206,6 +206,10 @@ else()
target_compile_definitions(snmalloc INTERFACE SNMALLOC_USE_WAIT_ON_ADDRESS=0)
endif()
if(SNMALLOC_REMOTE_BATCH_PROCESS_SIZE)
target_compile_definitions(snmalloc INTERFACE SNMALLOC_REMOTE_BATCH_PROCESS_SIZE=${SNMALLOC_REMOTE_BATCH_PROCESS_SIZE})
endif()
if(SNMALLOC_USE_SELF_VENDORED_STL)
target_compile_definitions(snmalloc INTERFACE SNMALLOC_USE_SELF_VENDORED_STL=1)
else()