Add the config.cache_oblivious mallctl.

This commit is contained in:
Jason Evans 2015-07-17 16:38:25 -07:00
parent 37fd1115c3
commit f2bc85298c
4 changed files with 16 additions and 1 deletions

View File

@ -102,7 +102,8 @@ brevity. Much more detail can be found in the git revision history:
cache set distribution. cache set distribution.
- Randomly distribute large allocation base pointer alignment relative to page - Randomly distribute large allocation base pointer alignment relative to page
boundaries in order to more uniformly utilize CPU cache sets. This can be 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. - Micro-optimize the fast paths for the public API functions.
- Refactor thread-specific data to reside in a single structure. This assures - 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. that only a single TLS read is necessary per call into the public API.

View File

@ -731,6 +731,16 @@ for (i = 0; i < nbins; i++) {
detecting whether another thread caused a refresh.</para></listitem> detecting whether another thread caused a refresh.</para></listitem>
</varlistentry> </varlistentry>
<varlistentry id="config.cache_oblivious">
<term>
<mallctl>config.cache_oblivious</mallctl>
(<type>bool</type>)
<literal>r-</literal>
</term>
<listitem><para><option>--enable-cache-oblivious</option> was specified
during build configuration.</para></listitem>
</varlistentry>
<varlistentry id="config.debug"> <varlistentry id="config.debug">
<term> <term>
<mallctl>config.debug</mallctl> <mallctl>config.debug</mallctl>

View File

@ -73,6 +73,7 @@ CTL_PROTO(thread_allocated)
CTL_PROTO(thread_allocatedp) CTL_PROTO(thread_allocatedp)
CTL_PROTO(thread_deallocated) CTL_PROTO(thread_deallocated)
CTL_PROTO(thread_deallocatedp) CTL_PROTO(thread_deallocatedp)
CTL_PROTO(config_cache_oblivious)
CTL_PROTO(config_debug) CTL_PROTO(config_debug)
CTL_PROTO(config_fill) CTL_PROTO(config_fill)
CTL_PROTO(config_lazy_lock) 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[] = { static const ctl_named_node_t config_node[] = {
{NAME("cache_oblivious"), CTL(config_cache_oblivious)},
{NAME("debug"), CTL(config_debug)}, {NAME("debug"), CTL(config_debug)},
{NAME("fill"), CTL(config_fill)}, {NAME("fill"), CTL(config_fill)},
{NAME("lazy_lock"), CTL(config_lazy_lock)}, {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_debug)
CTL_RO_BOOL_CONFIG_GEN(config_fill) CTL_RO_BOOL_CONFIG_GEN(config_fill)
CTL_RO_BOOL_CONFIG_GEN(config_lazy_lock) CTL_RO_BOOL_CONFIG_GEN(config_lazy_lock)

View File

@ -126,6 +126,7 @@ TEST_BEGIN(test_mallctl_config)
assert_zu_eq(sz, sizeof(oldval), "Unexpected output size"); \ assert_zu_eq(sz, sizeof(oldval), "Unexpected output size"); \
} while (0) } while (0)
TEST_MALLCTL_CONFIG(cache_oblivious);
TEST_MALLCTL_CONFIG(debug); TEST_MALLCTL_CONFIG(debug);
TEST_MALLCTL_CONFIG(fill); TEST_MALLCTL_CONFIG(fill);
TEST_MALLCTL_CONFIG(lazy_lock); TEST_MALLCTL_CONFIG(lazy_lock);