mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-07-01 09:14:38 +03:00
fix statistics for tracking the freed size of huge pages
This commit is contained in:
parent
3b567b1054
commit
2c839e7090
2 changed files with 11 additions and 5 deletions
11
src/arena.c
11
src/arena.c
|
@ -807,18 +807,27 @@ void _mi_arenas_page_free(mi_page_t* page, mi_tld_t* stats_tld /* can be NULL */
|
|||
mi_assert_internal(mi_page_is_abandoned(page));
|
||||
mi_assert_internal(page->next==NULL && page->prev==NULL);
|
||||
|
||||
// statistics
|
||||
const size_t block_size = mi_page_block_size(page);
|
||||
if (stats_tld != NULL) {
|
||||
mi_tld_stat_decrease(stats_tld, page_bins[_mi_page_bin(page)], 1);
|
||||
mi_tld_stat_decrease(stats_tld, pages, 1);
|
||||
if (block_size > MI_LARGE_MAX_OBJ_SIZE) {
|
||||
mi_tld_stat_decrease(stats_tld, malloc_huge, block_size);
|
||||
}
|
||||
}
|
||||
else {
|
||||
mi_os_stat_decrease(page_bins[_mi_page_bin(page)], 1);
|
||||
mi_os_stat_decrease(pages, 1);
|
||||
if (block_size > MI_LARGE_MAX_OBJ_SIZE) {
|
||||
mi_os_stat_decrease(malloc_huge, block_size);
|
||||
}
|
||||
}
|
||||
|
||||
// assertions
|
||||
#if MI_DEBUG>1
|
||||
if (page->memid.memkind==MI_MEM_ARENA && !mi_page_is_full(page)) {
|
||||
size_t bin = _mi_bin(mi_page_block_size(page));
|
||||
size_t bin = _mi_bin(block_size);
|
||||
size_t slice_index;
|
||||
size_t slice_count;
|
||||
mi_arena_t* arena = mi_page_arena(page, &slice_index, &slice_count);
|
||||
|
|
|
@ -543,10 +543,7 @@ void mi_stat_free(const mi_page_t* page, const mi_block_t* block) {
|
|||
mi_heap_stat_decrease(heap, malloc_bins[_mi_bin(bsize)], 1);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
const size_t bpsize = mi_page_block_size(page); // match stat in page.c:mi_huge_page_alloc
|
||||
mi_heap_stat_decrease(heap, malloc_huge, bpsize);
|
||||
}
|
||||
// huge pages sizes are tracked in `arena.c:_mi_arenas_page_free`
|
||||
}
|
||||
#else
|
||||
void mi_stat_free(const mi_page_t* page, const mi_block_t* block) {
|
||||
|
|
Loading…
Add table
Reference in a new issue