mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-07 15:59:32 +03:00
only delay eager commit after the first thread
This commit is contained in:
parent
0dd5a2e0a5
commit
fb418831df
1 changed files with 3 additions and 3 deletions
|
@ -578,11 +578,11 @@ static void mi_segment_perhaps_decommit(mi_segment_t* segment, uint8_t* p, size_
|
||||||
else if (segment->decommit_expire <= now) {
|
else if (segment->decommit_expire <= now) {
|
||||||
// previous decommit mask already expired
|
// previous decommit mask already expired
|
||||||
// mi_segment_delayed_decommit(segment, true, stats);
|
// mi_segment_delayed_decommit(segment, true, stats);
|
||||||
segment->decommit_expire = now + (mi_option_get(mi_option_decommit_delay) / 8); // wait a tiny bit longer in case there is a series of free's
|
segment->decommit_expire = now + mi_option_get(mi_option_decommit_extend_delay); // (mi_option_get(mi_option_decommit_delay) / 8); // wait a tiny bit longer in case there is a series of free's
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// previous decommit mask is not yet expired, increase the expiration by a bit.
|
// previous decommit mask is not yet expired, increase the expiration by a bit.
|
||||||
segment->decommit_expire += (mi_option_get(mi_option_decommit_delay) / 8);
|
segment->decommit_expire += mi_option_get(mi_option_decommit_extend_delay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -809,7 +809,7 @@ static mi_segment_t* mi_segment_init(mi_segment_t* segment, size_t required, mi_
|
||||||
|
|
||||||
// Commit eagerly only if not the first N lazy segments (to reduce impact of many threads that allocate just a little)
|
// Commit eagerly only if not the first N lazy segments (to reduce impact of many threads that allocate just a little)
|
||||||
const bool eager_delay = (!_mi_os_has_overcommit() && // never delay on overcommit systems
|
const bool eager_delay = (!_mi_os_has_overcommit() && // never delay on overcommit systems
|
||||||
_mi_current_thread_count() > 2 && // do not delay for the first N threads
|
_mi_current_thread_count() > 1 && // do not delay for the first N threads
|
||||||
tld->count < (size_t)mi_option_get(mi_option_eager_commit_delay));
|
tld->count < (size_t)mi_option_get(mi_option_eager_commit_delay));
|
||||||
const bool eager = !eager_delay && mi_option_is_enabled(mi_option_eager_commit);
|
const bool eager = !eager_delay && mi_option_is_enabled(mi_option_eager_commit);
|
||||||
bool commit = eager || (required > 0);
|
bool commit = eager || (required > 0);
|
||||||
|
|
Loading…
Add table
Reference in a new issue