Tcache: Make flush fractions configurable.
This commit is contained in:
committed by
David Goldblatt
parent
7503b5b33a
commit
6cdac3c573
10
src/ctl.c
10
src/ctl.c
@@ -110,6 +110,8 @@ CTL_PROTO(opt_tcache_nslots_large)
|
||||
CTL_PROTO(opt_lg_tcache_nslots_mul)
|
||||
CTL_PROTO(opt_tcache_gc_incr_bytes)
|
||||
CTL_PROTO(opt_tcache_gc_delay_bytes)
|
||||
CTL_PROTO(opt_lg_tcache_flush_small_div)
|
||||
CTL_PROTO(opt_lg_tcache_flush_large_div)
|
||||
CTL_PROTO(opt_thp)
|
||||
CTL_PROTO(opt_lg_extent_max_active_fit)
|
||||
CTL_PROTO(opt_prof)
|
||||
@@ -355,6 +357,10 @@ static const ctl_named_node_t opt_node[] = {
|
||||
{NAME("lg_tcache_nslots_mul"), CTL(opt_lg_tcache_nslots_mul)},
|
||||
{NAME("tcache_gc_incr_bytes"), CTL(opt_tcache_gc_incr_bytes)},
|
||||
{NAME("tcache_gc_delay_bytes"), CTL(opt_tcache_gc_delay_bytes)},
|
||||
{NAME("lg_tcache_flush_small_div"),
|
||||
CTL(opt_lg_tcache_flush_small_div)},
|
||||
{NAME("lg_tcache_flush_large_div"),
|
||||
CTL(opt_lg_tcache_flush_large_div)},
|
||||
{NAME("thp"), CTL(opt_thp)},
|
||||
{NAME("lg_extent_max_active_fit"), CTL(opt_lg_extent_max_active_fit)},
|
||||
{NAME("prof"), CTL(opt_prof)},
|
||||
@@ -1816,6 +1822,10 @@ CTL_RO_NL_GEN(opt_tcache_nslots_large, opt_tcache_nslots_large, unsigned)
|
||||
CTL_RO_NL_GEN(opt_lg_tcache_nslots_mul, opt_lg_tcache_nslots_mul, ssize_t)
|
||||
CTL_RO_NL_GEN(opt_tcache_gc_incr_bytes, opt_tcache_gc_incr_bytes, size_t)
|
||||
CTL_RO_NL_GEN(opt_tcache_gc_delay_bytes, opt_tcache_gc_delay_bytes, size_t)
|
||||
CTL_RO_NL_GEN(opt_lg_tcache_flush_small_div, opt_lg_tcache_flush_small_div,
|
||||
unsigned)
|
||||
CTL_RO_NL_GEN(opt_lg_tcache_flush_large_div, opt_lg_tcache_flush_large_div,
|
||||
unsigned)
|
||||
CTL_RO_NL_GEN(opt_thp, thp_mode_names[opt_thp], const char *)
|
||||
CTL_RO_NL_GEN(opt_lg_extent_max_active_fit, opt_lg_extent_max_active_fit,
|
||||
size_t)
|
||||
|
@@ -1397,6 +1397,12 @@ malloc_conf_init_helper(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS],
|
||||
"tcache_gc_delay_bytes", 0, SIZE_T_MAX,
|
||||
CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX,
|
||||
/* clip */ false)
|
||||
CONF_HANDLE_UNSIGNED(opt_lg_tcache_flush_small_div,
|
||||
"lg_tcache_flush_small_div", 1, 16,
|
||||
CONF_CHECK_MIN, CONF_CHECK_MAX, /* clip */ true)
|
||||
CONF_HANDLE_UNSIGNED(opt_lg_tcache_flush_large_div,
|
||||
"lg_tcache_flush_large_div", 1, 16,
|
||||
CONF_CHECK_MIN, CONF_CHECK_MAX, /* clip */ true)
|
||||
|
||||
/*
|
||||
* The runtime option of oversize_threshold remains
|
||||
|
@@ -1113,6 +1113,8 @@ stats_general_print(emitter_t *emitter) {
|
||||
OPT_WRITE_SSIZE_T("lg_tcache_nslots_mul")
|
||||
OPT_WRITE_SIZE_T("tcache_gc_incr_bytes")
|
||||
OPT_WRITE_SIZE_T("tcache_gc_delay_bytes")
|
||||
OPT_WRITE_UNSIGNED("lg_tcache_flush_small_div")
|
||||
OPT_WRITE_UNSIGNED("lg_tcache_flush_large_div")
|
||||
OPT_WRITE_CHAR_P("thp")
|
||||
OPT_WRITE_BOOL("prof")
|
||||
OPT_WRITE_CHAR_P("prof_prefix")
|
||||
|
@@ -53,6 +53,13 @@ size_t opt_tcache_gc_incr_bytes = 65536;
|
||||
*/
|
||||
size_t opt_tcache_gc_delay_bytes = 0;
|
||||
|
||||
/*
|
||||
* When a cache bin is flushed because it's full, how much of it do we flush?
|
||||
* By default, we flush half the maximum number of items.
|
||||
*/
|
||||
unsigned opt_lg_tcache_flush_small_div = 1;
|
||||
unsigned opt_lg_tcache_flush_large_div = 1;
|
||||
|
||||
cache_bin_info_t *tcache_bin_info;
|
||||
|
||||
/* Total stack size required (per tcache). Include the padding above. */
|
||||
|
Reference in New Issue
Block a user