mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-06-03 18:54:16 +03:00
Enable per-tcache tcache_max
1. add tcache_max and nhbins into tcache_t so that they are per-tcache, with one auto tcache per thread, it's also per-thread; 2. add mallctl for each thread to set its own tcache_max (of its auto tcache); 3. store the maximum number of items in each bin instead of using a global storage; 4. add tests for the modifications above. 5. Rename `nhbins` and `tcache_maxclass` to `global_do_not_change_nhbins` and `global_do_not_change_tcache_maxclass`.
This commit is contained in:
parent
fbca96c433
commit
a442d9b895
15 changed files with 528 additions and 222 deletions
|
|
@ -4136,15 +4136,13 @@ batch_alloc(void **ptrs, size_t num, size_t size, int flags) {
|
|||
filled += n;
|
||||
}
|
||||
|
||||
if (likely(ind < nhbins) && progress < batch) {
|
||||
unsigned tcache_ind = mallocx_tcache_get(flags);
|
||||
tcache_t *tcache = tcache_get_from_ind(tsd, tcache_ind,
|
||||
/* slow */ true, /* is_alloc */ true);
|
||||
if (likely(tcache != NULL &&
|
||||
ind < tcache_nhbins_get(tcache)) && progress < batch) {
|
||||
if (bin == NULL) {
|
||||
unsigned tcache_ind = mallocx_tcache_get(flags);
|
||||
tcache_t *tcache = tcache_get_from_ind(tsd,
|
||||
tcache_ind, /* slow */ true,
|
||||
/* is_alloc */ true);
|
||||
if (tcache != NULL) {
|
||||
bin = &tcache->bins[ind];
|
||||
}
|
||||
bin = &tcache->bins[ind];
|
||||
}
|
||||
/*
|
||||
* If we don't have a tcache bin, we don't want to
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue