From c7ccb8d7e99a1c3f1ba3cc3e465bc6dd1b0fbe0b Mon Sep 17 00:00:00 2001 From: Dmitry Ilvokhin Date: Mon, 19 Aug 2024 10:54:19 -0700 Subject: [PATCH] Add `experimental` prefix to `hpa_strict_min_purge_interval` Goal is to make it obvious this option is experimental. --- include/jemalloc/internal/hpa_opts.h | 4 ++-- src/ctl.c | 10 +++++----- src/hpa.c | 2 +- src/jemalloc.c | 4 ++-- src/stats.c | 2 +- test/unit/hpa.c | 14 +++++++------- test/unit/hpa_background_thread.sh | 2 +- test/unit/mallctl.c | 2 ++ 8 files changed, 21 insertions(+), 19 deletions(-) diff --git a/include/jemalloc/internal/hpa_opts.h b/include/jemalloc/internal/hpa_opts.h index bf3de0e9..15765689 100644 --- a/include/jemalloc/internal/hpa_opts.h +++ b/include/jemalloc/internal/hpa_opts.h @@ -56,7 +56,7 @@ struct hpa_shard_opts_s { * This is an option to provide backward compatibility for staged rollout of * purging logic fix. */ - bool strict_min_purge_interval; + bool experimental_strict_min_purge_interval; /* * Maximum number of hugepages to purge on each purging attempt. @@ -83,7 +83,7 @@ struct hpa_shard_opts_s { 10 * 1000, \ /* min_purge_interval_ms */ \ 5 * 1000, \ - /* strict_min_purge_interval */ \ + /* experimental_strict_min_purge_interval */ \ false, \ /* experimental_max_purge_nhp */ \ -1 \ diff --git a/src/ctl.c b/src/ctl.c index a01f643e..0f69e1ec 100644 --- a/src/ctl.c +++ b/src/ctl.c @@ -103,7 +103,7 @@ CTL_PROTO(opt_hpa_slab_max_alloc) CTL_PROTO(opt_hpa_hugification_threshold) CTL_PROTO(opt_hpa_hugify_delay_ms) CTL_PROTO(opt_hpa_min_purge_interval_ms) -CTL_PROTO(opt_hpa_strict_min_purge_interval) +CTL_PROTO(opt_experimental_hpa_strict_min_purge_interval) CTL_PROTO(opt_experimental_hpa_max_purge_nhp) CTL_PROTO(opt_hpa_dirty_mult) CTL_PROTO(opt_hpa_sec_nshards) @@ -461,8 +461,8 @@ static const ctl_named_node_t opt_node[] = { CTL(opt_hpa_hugification_threshold)}, {NAME("hpa_hugify_delay_ms"), CTL(opt_hpa_hugify_delay_ms)}, {NAME("hpa_min_purge_interval_ms"), CTL(opt_hpa_min_purge_interval_ms)}, - {NAME("hpa_strict_min_purge_interval"), - CTL(opt_hpa_strict_min_purge_interval)}, + {NAME("experimental_hpa_strict_min_purge_interval"), + CTL(opt_experimental_hpa_strict_min_purge_interval)}, {NAME("experimental_hpa_max_purge_nhp"), CTL(opt_experimental_hpa_max_purge_nhp)}, {NAME("hpa_dirty_mult"), CTL(opt_hpa_dirty_mult)}, @@ -2199,8 +2199,8 @@ CTL_RO_NL_GEN(opt_hpa_hugification_threshold, CTL_RO_NL_GEN(opt_hpa_hugify_delay_ms, opt_hpa_opts.hugify_delay_ms, uint64_t) CTL_RO_NL_GEN(opt_hpa_min_purge_interval_ms, opt_hpa_opts.min_purge_interval_ms, uint64_t) -CTL_RO_NL_GEN(opt_hpa_strict_min_purge_interval, - opt_hpa_opts.strict_min_purge_interval, bool) +CTL_RO_NL_GEN(opt_experimental_hpa_strict_min_purge_interval, + opt_hpa_opts.experimental_strict_min_purge_interval, bool) CTL_RO_NL_GEN(opt_experimental_hpa_max_purge_nhp, opt_hpa_opts.experimental_max_purge_nhp, ssize_t) diff --git a/src/hpa.c b/src/hpa.c index 0410fefc..3d7a6f60 100644 --- a/src/hpa.c +++ b/src/hpa.c @@ -512,7 +512,7 @@ hpa_try_hugify(tsdn_t *tsdn, hpa_shard_t *shard) { static bool hpa_min_purge_interval_passed(tsdn_t *tsdn, hpa_shard_t *shard) { malloc_mutex_assert_owner(tsdn, &shard->mtx); - if (shard->opts.strict_min_purge_interval) { + if (shard->opts.experimental_strict_min_purge_interval) { uint64_t since_last_purge_ms = shard->central->hooks.ms_since( &shard->last_purge); if (since_last_purge_ms < shard->opts.min_purge_interval_ms) { diff --git a/src/jemalloc.c b/src/jemalloc.c index 4859cff6..512b3fcc 100644 --- a/src/jemalloc.c +++ b/src/jemalloc.c @@ -1555,8 +1555,8 @@ malloc_conf_init_helper(sc_data_t *sc_data, unsigned bin_shard_sizes[SC_NBINS], CONF_DONT_CHECK_MIN, CONF_DONT_CHECK_MAX, false); CONF_HANDLE_BOOL( - opt_hpa_opts.strict_min_purge_interval, - "hpa_strict_min_purge_interval"); + opt_hpa_opts.experimental_strict_min_purge_interval, + "experimental_hpa_strict_min_purge_interval"); CONF_HANDLE_SSIZE_T( opt_hpa_opts.experimental_max_purge_nhp, diff --git a/src/stats.c b/src/stats.c index a5c3f0fe..bcd08ce5 100644 --- a/src/stats.c +++ b/src/stats.c @@ -1564,7 +1564,7 @@ stats_general_print(emitter_t *emitter) { OPT_WRITE_SIZE_T("hpa_hugification_threshold") OPT_WRITE_UINT64("hpa_hugify_delay_ms") OPT_WRITE_UINT64("hpa_min_purge_interval_ms") - OPT_WRITE_BOOL("hpa_strict_min_purge_interval") + OPT_WRITE_BOOL("experimental_hpa_strict_min_purge_interval") OPT_WRITE_SSIZE_T("experimental_hpa_max_purge_nhp") if (je_mallctl("opt.hpa_dirty_mult", (void *)&u32v, &u32sz, NULL, 0) == 0) { diff --git a/test/unit/hpa.c b/test/unit/hpa.c index 4f15876b..ae8a976c 100644 --- a/test/unit/hpa.c +++ b/test/unit/hpa.c @@ -34,7 +34,7 @@ static hpa_shard_opts_t test_hpa_shard_opts_default = { 10 * 1000, /* min_purge_interval_ms */ 5 * 1000, - /* strict_min_purge_interval */ + /* experimental_strict_min_purge_interval */ false, /* experimental_max_purge_nhp */ -1 @@ -53,7 +53,7 @@ static hpa_shard_opts_t test_hpa_shard_opts_purge = { 0, /* min_purge_interval_ms */ 5 * 1000, - /* strict_min_purge_interval */ + /* experimental_strict_min_purge_interval */ false, /* experimental_max_purge_nhp */ -1 @@ -506,7 +506,7 @@ TEST_BEGIN(test_purge_no_infinite_loop) { } TEST_END -TEST_BEGIN(test_strict_no_min_purge_interval) { +TEST_BEGIN(test_no_experimental_strict_min_purge_interval) { test_skip_if(!hpa_supported()); hpa_hooks_t hooks; @@ -547,7 +547,7 @@ TEST_BEGIN(test_strict_no_min_purge_interval) { } TEST_END -TEST_BEGIN(test_strict_min_purge_interval) { +TEST_BEGIN(test_experimental_strict_min_purge_interval) { test_skip_if(!hpa_supported()); hpa_hooks_t hooks; @@ -561,7 +561,7 @@ TEST_BEGIN(test_strict_min_purge_interval) { hpa_shard_opts_t opts = test_hpa_shard_opts_default; opts.deferral_allowed = true; - opts.strict_min_purge_interval = true; + opts.experimental_strict_min_purge_interval = true; hpa_shard_t *shard = create_test_data(&hooks, &opts); @@ -741,8 +741,8 @@ main(void) { test_alloc_dalloc_batch, test_defer_time, test_purge_no_infinite_loop, - test_strict_no_min_purge_interval, - test_strict_min_purge_interval, + test_no_experimental_strict_min_purge_interval, + test_experimental_strict_min_purge_interval, test_purge, test_experimental_max_purge_nhp); } diff --git a/test/unit/hpa_background_thread.sh b/test/unit/hpa_background_thread.sh index 666da8fc..33b70e19 100644 --- a/test/unit/hpa_background_thread.sh +++ b/test/unit/hpa_background_thread.sh @@ -1,4 +1,4 @@ #!/bin/sh -export MALLOC_CONF="hpa_dirty_mult:0.001,hpa_hugification_threshold_ratio:1.0,hpa_min_purge_interval_ms:50,hpa_strict_min_purge_interval:true,hpa_sec_nshards:0" +export MALLOC_CONF="hpa_dirty_mult:0.001,hpa_hugification_threshold_ratio:1.0,hpa_min_purge_interval_ms:50,hpa_sec_nshards:0" diff --git a/test/unit/mallctl.c b/test/unit/mallctl.c index ffe5c411..028a27f7 100644 --- a/test/unit/mallctl.c +++ b/test/unit/mallctl.c @@ -292,6 +292,8 @@ TEST_BEGIN(test_mallctl_opt) { TEST_MALLCTL_OPT(size_t, hpa_sec_max_bytes, always); TEST_MALLCTL_OPT(size_t, hpa_sec_bytes_after_flush, always); TEST_MALLCTL_OPT(size_t, hpa_sec_batch_fill_extra, always); + TEST_MALLCTL_OPT(bool, experimental_hpa_strict_min_purge_interval, + always); TEST_MALLCTL_OPT(ssize_t, experimental_hpa_max_purge_nhp, always); TEST_MALLCTL_OPT(unsigned, narenas, always); TEST_MALLCTL_OPT(const char *, percpu_arena, always);