forked from OSchip/llvm-project
[Sanitizers] Set default allocator_release_to_os_interval_ms to 5 seconds
Summary: With new release to OS approach (see D38245) it's reasonable to enable it by default. Setting allocator_release_to_os_interval_ms to 5000 seems to be a reasonable default (might be tuned later, based on the feedback). Also delaying the first release to OS in each bucket for at least allocator_release_to_os_interval_ms after the first allocation to prevent just allocated memory to be madvised back to OS and let short lived processes to avoid release to OS overhead altogether. Reviewers: cryptoad Subscribers: kubamracek, llvm-commits, mehdi_amini Differential Revision: https://reviews.llvm.org/D39318 llvm-svn: 316683
This commit is contained in:
parent
593ec59c7e
commit
9b4e32785a
|
@ -669,10 +669,16 @@ class SizeClassAllocator64 {
|
|||
|
||||
// Map more space for chunks, if necessary.
|
||||
if (new_space_end > region->mapped_user) {
|
||||
if (!kUsingConstantSpaceBeg && kRandomShuffleChunks)
|
||||
if (UNLIKELY(region->mapped_user == 0))
|
||||
if (UNLIKELY(region->mapped_user == 0)) {
|
||||
if (!kUsingConstantSpaceBeg && kRandomShuffleChunks)
|
||||
// The random state is initialized from ASLR.
|
||||
region->rand_state = static_cast<u32>(region_beg >> 12);
|
||||
// Postpone the first release to OS attempt for ReleaseToOSIntervalMs,
|
||||
// preventing just allocated memory from being released sooner than
|
||||
// necessary and also preventing extraneous ReleaseMemoryPagesToOS calls
|
||||
// for short lived processes.
|
||||
region->rtoi.last_release_at_ns = NanoTime();
|
||||
}
|
||||
// Do the mmap for the user memory.
|
||||
uptr map_size = kUserMapSize;
|
||||
while (new_space_end > region->mapped_user + map_size)
|
||||
|
|
|
@ -129,11 +129,11 @@ COMMON_FLAG(uptr, soft_rss_limit_mb, 0,
|
|||
" This limit does not affect memory allocations other than"
|
||||
" malloc/new.")
|
||||
COMMON_FLAG(bool, heap_profile, false, "Experimental heap profiler, asan-only")
|
||||
COMMON_FLAG(s32, allocator_release_to_os_interval_ms, kReleaseToOSIntervalNever,
|
||||
"Experimental. Only affects a 64-bit allocator. If set, tries to "
|
||||
"release unused memory to the OS, but not more often than this "
|
||||
"interval (in milliseconds). Negative values mean do not attempt "
|
||||
"to release memory to the OS.\n")
|
||||
COMMON_FLAG(s32, allocator_release_to_os_interval_ms, 5000,
|
||||
"Only affects a 64-bit allocator. If set, tries to release unused "
|
||||
"memory to the OS, but not more often than this interval (in "
|
||||
"milliseconds). Negative values mean do not attempt to release "
|
||||
"memory to the OS.\n")
|
||||
COMMON_FLAG(bool, can_use_proc_maps_statm, true,
|
||||
"If false, do not attempt to read /proc/maps/statm."
|
||||
" Mostly useful for testing sanitizers.")
|
||||
|
|
Loading…
Reference in New Issue