Use ticker_geom_t for arena tcache decay.
This commit is contained in:
committed by
David Goldblatt
parent
8edfc5b170
commit
c259323ab3
@@ -187,7 +187,7 @@ TEST_BEGIN(test_decay_ticks) {
|
||||
test_skip_if(check_background_thread_enabled());
|
||||
test_skip_if(opt_hpa);
|
||||
|
||||
ticker_t *decay_ticker;
|
||||
ticker_geom_t *decay_ticker;
|
||||
unsigned tick0, tick1, arena_ind;
|
||||
size_t sz, large0;
|
||||
void *p;
|
||||
@@ -205,7 +205,7 @@ TEST_BEGIN(test_decay_ticks) {
|
||||
expect_d_eq(mallctl("thread.arena", (void *)&old_arena_ind,
|
||||
&sz_arena_ind, (void *)&arena_ind, sizeof(arena_ind)), 0,
|
||||
"Unexpected mallctl() failure");
|
||||
decay_ticker = decay_ticker_get(tsd_fetch(), arena_ind);
|
||||
decay_ticker = tsd_arena_decay_tickerp_get(tsd_fetch());
|
||||
expect_ptr_not_null(decay_ticker,
|
||||
"Unexpected failure getting decay ticker");
|
||||
|
||||
@@ -216,60 +216,60 @@ TEST_BEGIN(test_decay_ticks) {
|
||||
*/
|
||||
|
||||
/* malloc(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = malloc(large0);
|
||||
expect_ptr_not_null(p, "Unexpected malloc() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0, "Expected ticker to tick during malloc()");
|
||||
/* free(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
free(p);
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0, "Expected ticker to tick during free()");
|
||||
|
||||
/* calloc(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = calloc(1, large0);
|
||||
expect_ptr_not_null(p, "Unexpected calloc() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0, "Expected ticker to tick during calloc()");
|
||||
free(p);
|
||||
|
||||
/* posix_memalign(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
expect_d_eq(posix_memalign(&p, sizeof(size_t), large0), 0,
|
||||
"Unexpected posix_memalign() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during posix_memalign()");
|
||||
free(p);
|
||||
|
||||
/* aligned_alloc(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = aligned_alloc(sizeof(size_t), large0);
|
||||
expect_ptr_not_null(p, "Unexpected aligned_alloc() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during aligned_alloc()");
|
||||
free(p);
|
||||
|
||||
/* realloc(). */
|
||||
/* Allocate. */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = realloc(NULL, large0);
|
||||
expect_ptr_not_null(p, "Unexpected realloc() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0, "Expected ticker to tick during realloc()");
|
||||
/* Reallocate. */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = realloc(p, large0);
|
||||
expect_ptr_not_null(p, "Unexpected realloc() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0, "Expected ticker to tick during realloc()");
|
||||
/* Deallocate. */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
realloc(p, 0);
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0, "Expected ticker to tick during realloc()");
|
||||
|
||||
/*
|
||||
@@ -286,41 +286,41 @@ TEST_BEGIN(test_decay_ticks) {
|
||||
sz = allocx_sizes[i];
|
||||
|
||||
/* mallocx(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = mallocx(sz, MALLOCX_TCACHE_NONE);
|
||||
expect_ptr_not_null(p, "Unexpected mallocx() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during mallocx() (sz=%zu)",
|
||||
sz);
|
||||
/* rallocx(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = rallocx(p, sz, MALLOCX_TCACHE_NONE);
|
||||
expect_ptr_not_null(p, "Unexpected rallocx() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during rallocx() (sz=%zu)",
|
||||
sz);
|
||||
/* xallocx(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
xallocx(p, sz, 0, MALLOCX_TCACHE_NONE);
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during xallocx() (sz=%zu)",
|
||||
sz);
|
||||
/* dallocx(). */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
dallocx(p, MALLOCX_TCACHE_NONE);
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during dallocx() (sz=%zu)",
|
||||
sz);
|
||||
/* sdallocx(). */
|
||||
p = mallocx(sz, MALLOCX_TCACHE_NONE);
|
||||
expect_ptr_not_null(p, "Unexpected mallocx() failure");
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
sdallocx(p, sz, MALLOCX_TCACHE_NONE);
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during sdallocx() "
|
||||
"(sz=%zu)", sz);
|
||||
@@ -349,31 +349,24 @@ TEST_BEGIN(test_decay_ticks) {
|
||||
sz = tcache_sizes[i];
|
||||
|
||||
/* tcache fill. */
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
p = mallocx(sz, MALLOCX_TCACHE(tcache_ind));
|
||||
expect_ptr_not_null(p, "Unexpected mallocx() failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during tcache fill "
|
||||
"(sz=%zu)", sz);
|
||||
/* tcache flush. */
|
||||
dallocx(p, MALLOCX_TCACHE(tcache_ind));
|
||||
tick0 = ticker_read(decay_ticker);
|
||||
tick0 = ticker_geom_read(decay_ticker);
|
||||
expect_d_eq(mallctl("tcache.flush", NULL, NULL,
|
||||
(void *)&tcache_ind, sizeof(unsigned)), 0,
|
||||
"Unexpected mallctl failure");
|
||||
tick1 = ticker_read(decay_ticker);
|
||||
tick1 = ticker_geom_read(decay_ticker);
|
||||
|
||||
/* Will only tick if it's in tcache. */
|
||||
if (sz <= tcache_max) {
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during tcache "
|
||||
"flush (sz=%zu)", sz);
|
||||
} else {
|
||||
expect_u32_eq(tick1, tick0,
|
||||
"Unexpected ticker tick during tcache "
|
||||
"flush (sz=%zu)", sz);
|
||||
}
|
||||
expect_u32_ne(tick1, tick0,
|
||||
"Expected ticker to tick during tcache flush (sz=%zu)", sz);
|
||||
}
|
||||
}
|
||||
TEST_END
|
||||
@@ -401,7 +394,7 @@ decay_ticker_helper(unsigned arena_ind, int flags, bool dirty, ssize_t dt,
|
||||
void *p = do_mallocx(1, flags);
|
||||
uint64_t dirty_npurge1, muzzy_npurge1;
|
||||
do {
|
||||
for (unsigned i = 0; i < DECAY_NTICKS_PER_UPDATE / 2;
|
||||
for (unsigned i = 0; i < ARENA_DECAY_NTICKS_PER_UPDATE / 2;
|
||||
i++) {
|
||||
void *q = do_mallocx(1, flags);
|
||||
dallocx(q, flags);
|
||||
|
Reference in New Issue
Block a user