Move arena_t's purging field into arena_decay_t.
This commit is contained in:
parent
765edd67b4
commit
38a5bfc816
@ -39,6 +39,11 @@ struct arena_bin_info_s {
|
|||||||
struct arena_decay_s {
|
struct arena_decay_s {
|
||||||
/* Synchronizes all non-atomic fields. */
|
/* Synchronizes all non-atomic fields. */
|
||||||
malloc_mutex_t mtx;
|
malloc_mutex_t mtx;
|
||||||
|
/*
|
||||||
|
* True if a thread is currently purging the extents associated with
|
||||||
|
* this decay structure.
|
||||||
|
*/
|
||||||
|
bool purging;
|
||||||
/*
|
/*
|
||||||
* Approximate time in seconds from the creation of a set of unused
|
* Approximate time in seconds from the creation of a set of unused
|
||||||
* dirty pages until an equivalent set of unused dirty pages is purged
|
* dirty pages until an equivalent set of unused dirty pages is purged
|
||||||
@ -199,13 +204,6 @@ struct arena_s {
|
|||||||
*/
|
*/
|
||||||
arena_decay_t decay;
|
arena_decay_t decay;
|
||||||
|
|
||||||
/*
|
|
||||||
* True if a thread is currently executing arena_purge_to_limit().
|
|
||||||
*
|
|
||||||
* Synchronization: decay.mtx.
|
|
||||||
*/
|
|
||||||
bool purging;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Next extent size class in a growing series to use when satisfying a
|
* Next extent size class in a growing series to use when satisfying a
|
||||||
* request via the extent hooks (only if !config_munmap). This limits
|
* request via the extent hooks (only if !config_munmap). This limits
|
||||||
|
@ -663,6 +663,7 @@ arena_decay_init(arena_decay_t *decay, extents_t *extents, ssize_t decay_time) {
|
|||||||
if (malloc_mutex_init(&decay->mtx, "decay", WITNESS_RANK_DECAY)) {
|
if (malloc_mutex_init(&decay->mtx, "decay", WITNESS_RANK_DECAY)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
decay->purging = false;
|
||||||
arena_decay_reinit(decay, extents, decay_time);
|
arena_decay_reinit(decay, extents, decay_time);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -812,10 +813,10 @@ arena_purge_to_limit(tsdn_t *tsdn, arena_t *arena, arena_decay_t *decay,
|
|||||||
witness_assert_depth_to_rank(tsdn, WITNESS_RANK_CORE, 1);
|
witness_assert_depth_to_rank(tsdn, WITNESS_RANK_CORE, 1);
|
||||||
malloc_mutex_assert_owner(tsdn, &decay->mtx);
|
malloc_mutex_assert_owner(tsdn, &decay->mtx);
|
||||||
|
|
||||||
if (arena->purging) {
|
if (decay->purging) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
arena->purging = true;
|
decay->purging = true;
|
||||||
|
|
||||||
extent_hooks_t *extent_hooks = extent_hooks_get(arena);
|
extent_hooks_t *extent_hooks = extent_hooks_get(arena);
|
||||||
size_t npurge, npurged;
|
size_t npurge, npurged;
|
||||||
@ -845,7 +846,7 @@ arena_purge_to_limit(tsdn_t *tsdn, arena_t *arena, arena_decay_t *decay,
|
|||||||
}
|
}
|
||||||
|
|
||||||
label_return:
|
label_return:
|
||||||
arena->purging = false;
|
decay->purging = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1747,8 +1748,6 @@ arena_new(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks) {
|
|||||||
goto label_error;
|
goto label_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
arena->purging = false;
|
|
||||||
|
|
||||||
if (!config_munmap) {
|
if (!config_munmap) {
|
||||||
arena->extent_grow_next = psz2ind(HUGEPAGE);
|
arena->extent_grow_next = psz2ind(HUGEPAGE);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user