mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-23 13:13:06 +00:00
add experimental.arenas_create_ext mallctl
This mallctl accepts an arena_config_t structure which can be used to customize the behavior of the arena. Right now it contains extent_hooks and a new option, metadata_use_hooks, which controls whether the extent hooks are also used for metadata allocation. The medata_use_hooks option has two main use cases: 1. In heterogeneous memory systems, to avoid metadata being placed on potentially slower memory. 2. Avoiding virtual memory from being leaked as a result of metadata allocation failure originating in an extent hook.
This commit is contained in:
@@ -32,7 +32,8 @@ TEST_BEGIN(test_base_hooks_default) {
|
||||
|
||||
tsdn_t *tsdn = tsd_tsdn(tsd_fetch());
|
||||
base = base_new(tsdn, 0,
|
||||
(extent_hooks_t *)&ehooks_default_extent_hooks);
|
||||
(extent_hooks_t *)&ehooks_default_extent_hooks,
|
||||
/* metadata_use_hooks */ true);
|
||||
|
||||
if (config_stats) {
|
||||
base_stats_get(tsdn, base, &allocated0, &resident, &mapped,
|
||||
@@ -74,7 +75,7 @@ TEST_BEGIN(test_base_hooks_null) {
|
||||
memcpy(&hooks, &hooks_null, sizeof(extent_hooks_t));
|
||||
|
||||
tsdn_t *tsdn = tsd_tsdn(tsd_fetch());
|
||||
base = base_new(tsdn, 0, &hooks);
|
||||
base = base_new(tsdn, 0, &hooks, /* metadata_use_hooks */ true);
|
||||
expect_ptr_not_null(base, "Unexpected base_new() failure");
|
||||
|
||||
if (config_stats) {
|
||||
@@ -120,7 +121,7 @@ TEST_BEGIN(test_base_hooks_not_null) {
|
||||
|
||||
tsdn_t *tsdn = tsd_tsdn(tsd_fetch());
|
||||
did_alloc = false;
|
||||
base = base_new(tsdn, 0, &hooks);
|
||||
base = base_new(tsdn, 0, &hooks, /* metadata_use_hooks */ true);
|
||||
expect_ptr_not_null(base, "Unexpected base_new() failure");
|
||||
expect_true(did_alloc, "Expected alloc");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user