reduce page retire cycles
This commit is contained in:
parent
01ad553978
commit
dd18852946
@ -394,7 +394,7 @@ void _mi_page_free(mi_page_t* page, mi_page_queue_t* pq, bool force) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define MI_MAX_RETIRE_SIZE (MI_MEDIUM_OBJ_SIZE_MAX)
|
#define MI_MAX_RETIRE_SIZE (MI_MEDIUM_OBJ_SIZE_MAX)
|
||||||
#define MI_RETIRE_CYCLES (16)
|
#define MI_RETIRE_CYCLES (8)
|
||||||
|
|
||||||
// Retire a page with no more used blocks
|
// Retire a page with no more used blocks
|
||||||
// Important to not retire too quickly though as new
|
// Important to not retire too quickly though as new
|
||||||
@ -419,7 +419,7 @@ void _mi_page_retire(mi_page_t* page) {
|
|||||||
if (mi_likely(page->xblock_size <= MI_MAX_RETIRE_SIZE && !mi_page_is_in_full(page))) {
|
if (mi_likely(page->xblock_size <= MI_MAX_RETIRE_SIZE && !mi_page_is_in_full(page))) {
|
||||||
if (pq->last==page && pq->first==page) { // the only page in the queue?
|
if (pq->last==page && pq->first==page) { // the only page in the queue?
|
||||||
mi_stat_counter_increase(_mi_stats_main.page_no_retire,1);
|
mi_stat_counter_increase(_mi_stats_main.page_no_retire,1);
|
||||||
page->retire_expire = MI_RETIRE_CYCLES;
|
page->retire_expire = (page->xblock_size <= MI_SMALL_OBJ_SIZE_MAX ? MI_RETIRE_CYCLES : MI_RETIRE_CYCLES/4);
|
||||||
mi_heap_t* heap = mi_page_heap(page);
|
mi_heap_t* heap = mi_page_heap(page);
|
||||||
mi_assert_internal(pq >= heap->pages);
|
mi_assert_internal(pq >= heap->pages);
|
||||||
const size_t index = pq - heap->pages;
|
const size_t index = pq - heap->pages;
|
||||||
|
Loading…
Reference in New Issue
Block a user