Set huge_threshold to 8M by default.
This feature uses an dedicated arena to handle huge requests, which significantly improves VM fragmentation. In production workload we tested it often reduces VM size by >30%.
This commit is contained in:
parent
d3145014a0
commit
350809dc5d
@ -46,6 +46,6 @@ typedef enum {
|
|||||||
* When allocation_size >= huge_threshold, use the dedicated huge arena (unless
|
* When allocation_size >= huge_threshold, use the dedicated huge arena (unless
|
||||||
* have explicitly spicified arena index). 0 disables the feature.
|
* have explicitly spicified arena index). 0 disables the feature.
|
||||||
*/
|
*/
|
||||||
#define HUGE_THRESHOLD_DEFAULT 0
|
#define HUGE_THRESHOLD_DEFAULT (8 << 20)
|
||||||
|
|
||||||
#endif /* JEMALLOC_INTERNAL_ARENA_TYPES_H */
|
#endif /* JEMALLOC_INTERNAL_ARENA_TYPES_H */
|
||||||
|
@ -1239,7 +1239,14 @@ malloc_conf_init(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS]) {
|
|||||||
CONF_HANDLE_SSIZE_T(opt_lg_tcache_max, "lg_tcache_max",
|
CONF_HANDLE_SSIZE_T(opt_lg_tcache_max, "lg_tcache_max",
|
||||||
-1, (sizeof(size_t) << 3) - 1)
|
-1, (sizeof(size_t) << 3) - 1)
|
||||||
|
|
||||||
/* Experimental feature. Will be documented later.*/
|
/*
|
||||||
|
* The runtime option of huge_threshold remains
|
||||||
|
* undocumented. It may be tweaked in the next major
|
||||||
|
* release (6.0). The default value 8M is rather
|
||||||
|
* conservative / safe. Tuning it further down may
|
||||||
|
* improve fragmentation a bit more, but may also cause
|
||||||
|
* contention on the huge arena.
|
||||||
|
*/
|
||||||
CONF_HANDLE_SIZE_T(opt_huge_threshold,
|
CONF_HANDLE_SIZE_T(opt_huge_threshold,
|
||||||
"huge_threshold", SC_LARGE_MINCLASS,
|
"huge_threshold", SC_LARGE_MINCLASS,
|
||||||
SC_LARGE_MAXCLASS, yes, yes, false)
|
SC_LARGE_MAXCLASS, yes, yes, false)
|
||||||
|
Loading…
Reference in New Issue
Block a user