Decay: move in some background_thread accesses.
This commit is contained in:
parent
cdb916ed3f
commit
d1d7e1076b
@ -105,6 +105,17 @@ decay_epoch_npages_delta(const decay_t *decay) {
|
|||||||
return decay->backlog[SMOOTHSTEP_NSTEPS - 1];
|
return decay->backlog[SMOOTHSTEP_NSTEPS - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Current epoch duration, in nanoseconds. Given that new epochs are started
|
||||||
|
* somewhat haphazardly, this is not necessarily exactly the time between any
|
||||||
|
* two calls to decay_maybe_advance_epoch; see the comments on fields in the
|
||||||
|
* decay_t.
|
||||||
|
*/
|
||||||
|
static inline uint64_t
|
||||||
|
decay_epoch_duration_ns(const decay_t *decay) {
|
||||||
|
return nstime_ns(&decay->interval);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns true if the passed in decay time setting is valid.
|
* Returns true if the passed in decay time setting is valid.
|
||||||
* < -1 : invalid
|
* < -1 : invalid
|
||||||
|
@ -121,14 +121,14 @@ arena_decay_compute_purge_interval_impl(tsdn_t *tsdn, decay_t *decay,
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint64_t interval;
|
uint64_t interval;
|
||||||
ssize_t decay_time = atomic_load_zd(&decay->time_ms, ATOMIC_RELAXED);
|
ssize_t decay_time = decay_ms_read(decay);
|
||||||
if (decay_time <= 0) {
|
if (decay_time <= 0) {
|
||||||
/* Purging is eagerly done or disabled currently. */
|
/* Purging is eagerly done or disabled currently. */
|
||||||
interval = BACKGROUND_THREAD_INDEFINITE_SLEEP;
|
interval = BACKGROUND_THREAD_INDEFINITE_SLEEP;
|
||||||
goto label_done;
|
goto label_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t decay_interval_ns = nstime_ns(&decay->interval);
|
uint64_t decay_interval_ns = decay_epoch_duration_ns(decay);
|
||||||
assert(decay_interval_ns > 0);
|
assert(decay_interval_ns > 0);
|
||||||
size_t npages = ecache_npages_get(ecache);
|
size_t npages = ecache_npages_get(ecache);
|
||||||
if (npages == 0) {
|
if (npages == 0) {
|
||||||
@ -674,12 +674,12 @@ background_thread_interval_check(tsdn_t *tsdn, arena_t *arena, decay_t *decay,
|
|||||||
goto label_done;
|
goto label_done;
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t decay_time = atomic_load_zd(&decay->time_ms, ATOMIC_RELAXED);
|
ssize_t decay_time = decay_ms_read(decay);
|
||||||
if (decay_time <= 0) {
|
if (decay_time <= 0) {
|
||||||
/* Purging is eagerly done or disabled currently. */
|
/* Purging is eagerly done or disabled currently. */
|
||||||
goto label_done_unlock2;
|
goto label_done_unlock2;
|
||||||
}
|
}
|
||||||
uint64_t decay_interval_ns = nstime_ns(&decay->interval);
|
uint64_t decay_interval_ns = decay_epoch_duration_ns(decay);
|
||||||
assert(decay_interval_ns > 0);
|
assert(decay_interval_ns > 0);
|
||||||
|
|
||||||
nstime_t diff;
|
nstime_t diff;
|
||||||
|
Loading…
Reference in New Issue
Block a user