From f2bc85298c1cd6f4e95fbbeeb7ccc32ff52a1d8f Mon Sep 17 00:00:00 2001 From: Jason Evans Date: Fri, 17 Jul 2015 16:38:25 -0700 Subject: [PATCH] Add the config.cache_oblivious mallctl. --- ChangeLog | 3 ++- doc/jemalloc.xml.in | 10 ++++++++++ src/ctl.c | 3 +++ test/unit/mallctl.c | 1 + 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 950c656a..fe62e525 100644 --- a/ChangeLog +++ b/ChangeLog @@ -102,7 +102,8 @@ brevity. Much more detail can be found in the git revision history: cache set distribution. - Randomly distribute large allocation base pointer alignment relative to page boundaries in order to more uniformly utilize CPU cache sets. This can be - disabled via the --disable-cache-oblivious configure option. + disabled via the --disable-cache-oblivious configure option, and queried via + the "config.cache_oblivious" mallctl. - Micro-optimize the fast paths for the public API functions. - Refactor thread-specific data to reside in a single structure. This assures that only a single TLS read is necessary per call into the public API. diff --git a/doc/jemalloc.xml.in b/doc/jemalloc.xml.in index eb677ad9..dbbe8373 100644 --- a/doc/jemalloc.xml.in +++ b/doc/jemalloc.xml.in @@ -731,6 +731,16 @@ for (i = 0; i < nbins; i++) { detecting whether another thread caused a refresh. + + + config.cache_oblivious + (bool) + r- + + was specified + during build configuration. + + config.debug diff --git a/src/ctl.c b/src/ctl.c index d215b19b..1988aee3 100644 --- a/src/ctl.c +++ b/src/ctl.c @@ -73,6 +73,7 @@ CTL_PROTO(thread_allocated) CTL_PROTO(thread_allocatedp) CTL_PROTO(thread_deallocated) CTL_PROTO(thread_deallocatedp) +CTL_PROTO(config_cache_oblivious) CTL_PROTO(config_debug) CTL_PROTO(config_fill) CTL_PROTO(config_lazy_lock) @@ -238,6 +239,7 @@ static const ctl_named_node_t thread_node[] = { }; static const ctl_named_node_t config_node[] = { + {NAME("cache_oblivious"), CTL(config_cache_oblivious)}, {NAME("debug"), CTL(config_debug)}, {NAME("fill"), CTL(config_fill)}, {NAME("lazy_lock"), CTL(config_lazy_lock)}, @@ -1247,6 +1249,7 @@ label_return: /******************************************************************************/ +CTL_RO_BOOL_CONFIG_GEN(config_cache_oblivious) CTL_RO_BOOL_CONFIG_GEN(config_debug) CTL_RO_BOOL_CONFIG_GEN(config_fill) CTL_RO_BOOL_CONFIG_GEN(config_lazy_lock) diff --git a/test/unit/mallctl.c b/test/unit/mallctl.c index 29823a6c..31e354ca 100644 --- a/test/unit/mallctl.c +++ b/test/unit/mallctl.c @@ -126,6 +126,7 @@ TEST_BEGIN(test_mallctl_config) assert_zu_eq(sz, sizeof(oldval), "Unexpected output size"); \ } while (0) + TEST_MALLCTL_CONFIG(cache_oblivious); TEST_MALLCTL_CONFIG(debug); TEST_MALLCTL_CONFIG(fill); TEST_MALLCTL_CONFIG(lazy_lock);