Cache extra extents in the dirty pool from ecache_alloc_grow

This commit is contained in:
Guangli Dai 2025-01-27 23:09:51 -08:00
parent 2651071172
commit e7aa4e4cac
3 changed files with 96 additions and 12 deletions

View file

@ -311,6 +311,17 @@ sz_size2index_usize_fastpath(size_t size, szind_t *ind, size_t *usize) {
}
}
JEMALLOC_ALWAYS_INLINE size_t
sz_s2u_compute_using_delta(size_t size) {
size_t x = lg_floor((size<<1)-1);
size_t lg_delta = (x < SC_LG_NGROUP + LG_QUANTUM + 1)
? LG_QUANTUM : x - SC_LG_NGROUP - 1;
size_t delta = ZU(1) << lg_delta;
size_t delta_mask = delta - 1;
size_t usize = (size + delta_mask) & ~delta_mask;
return usize;
}
JEMALLOC_ALWAYS_INLINE size_t
sz_s2u_compute(size_t size) {
if (unlikely(size > SC_LARGE_MAXCLASS)) {
@ -329,13 +340,7 @@ sz_s2u_compute(size_t size) {
}
#endif
if (size <= SC_SMALL_MAXCLASS || !sz_limit_usize_gap_enabled()) {
size_t x = lg_floor((size<<1)-1);
size_t lg_delta = (x < SC_LG_NGROUP + LG_QUANTUM + 1)
? LG_QUANTUM : x - SC_LG_NGROUP - 1;
size_t delta = ZU(1) << lg_delta;
size_t delta_mask = delta - 1;
size_t usize = (size + delta_mask) & ~delta_mask;
return usize;
return sz_s2u_compute_using_delta(size);
} else {
/*
* With sz_limit_usize_gap_enabled() == true, usize of a large