jemalloc/src
Jiebin Sun 3c14707b01 To improve reuse efficiency, the maximum coalesced size for large extents
in the dirty ecache has been limited. This patch was tested with real
workloads using ClickHouse (Clickbench Q35) on a system with 2x240 vCPUs.
The results showed a 2X in query per second (QPS) performance and
a reduction in page faults to 29% of the previous rate. Additionally,
microbenchmark testing involved 256 memory reallocations resizing
from 4KB to 16KB in one arena, which demonstrated a 5X performance
improvement.

Signed-off-by: Jiebin Sun <jiebin.sun@intel.com>
2025-05-12 15:45:36 -07:00
..
arena.c Remove build-time configuration 'config_limit_usize_gap' 2025-05-06 14:47:35 -07:00
background_thread.c background_thread: add fallback for pthread_create dlsym 2025-03-17 09:41:04 -07:00
base.c fix assertion error in huge_arena_auto_thp_switch() when b0 is deleted in unit test 2025-03-20 12:45:23 -07:00
batcher.c Bin batching: add some stats. 2024-05-22 10:30:31 -07:00
bin.c Add batching to arena bins. 2024-05-22 10:30:31 -07:00
bin_info.c Add batching to arena bins. 2024-05-22 10:30:31 -07:00
bitmap.c Remove beginning define in source files 2020-06-19 12:15:44 -07:00
buf_writer.c Remove beginning define in source files 2020-06-19 12:15:44 -07:00
cache_bin.c Cleanup cache_bin_info_t* info input args 2023-10-25 10:27:31 -07:00
ckh.c Fix shadowed variable usage. 2021-12-23 10:55:08 -08:00
counter.c Remove beginning define in source files 2020-06-19 12:15:44 -07:00
ctl.c Renaming limit_usize_gap to disable_large_size_classes 2025-05-06 14:47:35 -07:00
decay.c Fix remaining static analysis warnings 2023-06-23 11:50:29 -07:00
div.c Add the div module, which allows fast division by dynamic values. 2017-12-21 14:25:43 -08:00
ecache.c San: Rename 'guard' to 'san' 2021-12-15 10:39:17 -08:00
edata.c Pairing heap: inline functions instead of macros. 2021-08-02 15:02:49 -07:00
edata_cache.c edata_cache: Allow unbounded fast caching. 2021-07-26 15:14:37 -07:00
ehooks.c Fix ehooks assertion for arena creation 2024-12-11 13:33:32 -08:00
emap.c Set dependent as false for all rtree reads without ownership 2024-06-24 10:50:20 -07:00
eset.c Fixes to prevent static analysis warnings. 2025-05-06 14:47:35 -07:00
exp_grow.c Fix the VM over-reservation on aarch64 w/ larger pages. 2024-09-04 15:43:59 -07:00
extent.c To improve reuse efficiency, the maximum coalesced size for large extents 2025-05-12 15:45:36 -07:00
extent_dss.c Fix all optimization-inhibiting integer-to-pointer casts 2023-07-24 14:40:42 -07:00
extent_mmap.c Remove beginning define in source files 2020-06-19 12:15:44 -07:00
fxp.c Add fxp: A fixed-point math library. 2020-12-04 23:48:19 -08:00
hook.c Enabled -Wstrict-prototypes and fixed warnings. 2023-07-06 12:00:02 -07:00
hpa.c Fixes to prevent static analysis warnings. 2025-05-06 14:47:35 -07:00
hpa_hooks.c if process_madvise is supported, call it when purging hpa 2025-04-04 13:57:42 -07:00
hpdata.c Add output argument to hpa_purge_begin to count dirty ranges 2025-04-25 19:19:03 -07:00
inspect.c Enable a few additional warnings for CI and fix the issues they uncovered 2023-08-11 13:56:23 -07:00
jemalloc.c Renaming limit_usize_gap to disable_large_size_classes 2025-05-06 14:47:35 -07:00
jemalloc_cpp.cpp Add LOGs when entrying and exiting free and sdallocx. 2024-01-11 14:37:20 -08:00
large.c Fix all optimization-inhibiting integer-to-pointer casts 2023-07-24 14:40:42 -07:00
log.c Logging: allow logging with empty varargs. 2017-07-22 09:38:19 -07:00
malloc_io.c Fix remaining static analysis warnings 2023-06-23 11:50:29 -07:00
mutex.c Enable a few additional warnings for CI and fix the issues they uncovered 2023-08-11 13:56:23 -07:00
nstime.c Add nstime_ms_since to get time since in ms 2024-11-08 10:37:28 -08:00
pa.c Introduce getters for page allocator shard stats 2024-04-04 12:17:30 -07:00
pa_extra.c Include HPA ndirty into page allocator ndirty stat 2024-04-04 12:17:30 -07:00
pac.c Fixes to prevent static analysis warnings. 2025-05-06 14:47:35 -07:00
pages.c Add experimental option force using SYS_process_madvise 2025-04-28 18:45:30 -07:00
pai.c HPA: Allow frequent reused alloc to bypass the slab_max_alloc limit, as long as 2024-01-18 14:51:04 -08:00
peak_demand.c Extend purging algorithm with peak demand tracking 2025-03-13 10:12:22 -07:00
peak_event.c Add experimental.thread.activity_callback. 2020-11-05 12:33:25 -08:00
prof.c Add usize to prof_sample_hook_t 2024-07-30 10:29:30 -07:00
prof_data.c Renaming limit_usize_gap to disable_large_size_classes 2025-05-06 14:47:35 -07:00
prof_log.c Make eligible global variables static and/or const 2023-07-06 14:15:12 -07:00
prof_recent.c Enabled -Wstrict-prototypes and fixed warnings. 2023-07-06 12:00:02 -07:00
prof_stack_range.c Fix frame pointer based unwinder to handle changing stack range 2025-03-13 17:15:42 -07:00
prof_stats.c Track per size class internal fragmentation 2021-01-07 20:39:49 -08:00
prof_sys.c Fixes to prevent static analysis warnings. 2025-05-06 14:47:35 -07:00
prof_threshold.c Unlike prof_sample which is supported only with profiling mode active, prof_threshold is intended to be an always-supported allocation callback with much less overhead. The usage of the threshold allows performance critical callers to change program execution based on the callback: e.g. drop caches when memory becomes high or to predict the program is about to OOM ahead of time using peak memory watermarks. 2025-01-29 18:55:52 -08:00
psset.c Fixes to prevent static analysis warnings. 2025-05-06 14:47:35 -07:00
rtree.c metadata usage breakdowns: tracking edata and rtree usages 2023-10-11 11:56:01 -07:00
safety_check.c When safety_check_fail, also embed hint msg in the abort function name 2024-01-11 14:19:54 -08:00
san.c Fix all optimization-inhibiting integer-to-pointer casts 2023-07-24 14:40:42 -07:00
san_bump.c San: Create a function for committing and zeroing 2021-12-15 10:39:17 -08:00
sc.c Add comments and use meaningful vars in sz_psz2ind. 2022-03-24 16:56:59 -07:00
sec.c Renaming limit_usize_gap to disable_large_size_classes 2025-05-06 14:47:35 -07:00
stats.c Renaming limit_usize_gap to disable_large_size_classes 2025-05-06 14:47:35 -07:00
sz.c Fix static analysis warnings. 2024-01-03 14:18:52 -08:00
tcache.c Introducing a new usize calculation policy 2025-03-06 15:08:13 -08:00
test_hooks.c Enabled -Wstrict-prototypes and fixed warnings. 2023-07-06 12:00:02 -07:00
thread_event.c Unlike prof_sample which is supported only with profiling mode active, prof_threshold is intended to be an always-supported allocation callback with much less overhead. The usage of the threshold allows performance critical callers to change program execution based on the callback: e.g. drop caches when memory becomes high or to predict the program is about to OOM ahead of time using peak memory watermarks. 2025-01-29 18:55:52 -08:00
ticker.c Add ticker_geom_t. 2021-02-04 14:10:43 -08:00
ticker.py Add ticker_geom_t. 2021-02-04 14:10:43 -08:00
tsd.c Use MSVC __declspec(thread) for TSD on Windows 2024-09-30 11:33:44 -07:00
util.c Add mallctl to set and get ncached_max of each cache_bin. 2023-10-17 14:53:23 -07:00
witness.c Remove beginning define in source files 2020-06-19 12:15:44 -07:00
zone.c Fix deadlock in multithreaded fork in OS X. 2017-07-10 18:17:12 -07:00