mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-08-02 16:40:29 +03:00
Perform delayed coalescing prior to purging.
Rather than purging uncoalesced extents, perform just enough incremental coalescing to purge only fully coalesced extents. In the absence of cached extent reuse, the immediate versus delayed incremental purging algorithms result in the same purge order. This resolves #655.
This commit is contained in:
parent
8547ee11c3
commit
e201e24904
6 changed files with 152 additions and 50 deletions
|
|
@ -37,6 +37,8 @@ void extent_list_init(extent_list_t *list);
|
|||
extent_t *extent_list_first(const extent_list_t *list);
|
||||
extent_t *extent_list_last(const extent_list_t *list);
|
||||
void extent_list_append(extent_list_t *list, extent_t *extent);
|
||||
void extent_list_replace(extent_list_t *list, extent_t *to_remove,
|
||||
extent_t *to_insert);
|
||||
void extent_list_remove(extent_list_t *list, extent_t *extent);
|
||||
int extent_sn_comp(const extent_t *a, const extent_t *b);
|
||||
int extent_ad_comp(const extent_t *a, const extent_t *b);
|
||||
|
|
@ -253,6 +255,13 @@ extent_list_append(extent_list_t *list, extent_t *extent) {
|
|||
ql_tail_insert(list, extent, ql_link);
|
||||
}
|
||||
|
||||
JEMALLOC_INLINE void
|
||||
extent_list_replace(extent_list_t *list, extent_t *to_remove,
|
||||
extent_t *to_insert) {
|
||||
ql_after_insert(to_remove, to_insert, ql_link);
|
||||
ql_remove(list, to_remove, ql_link);
|
||||
}
|
||||
|
||||
JEMALLOC_INLINE void
|
||||
extent_list_remove(extent_list_t *list, extent_t *extent) {
|
||||
ql_remove(list, extent, ql_link);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue