forked from OSchip/llvm-project
Support: Don't set RLIMIT_AS on child processes when applying a memory limit
It doesn't seem relevant to set an address space limit - this isn't important in any sense that I'm aware & it gets in the way of things that use a lot of address space, like llvm-symbolizer. This came up when I realized that bugpoint regression tests were much slower with -gsplit-dwarf than plain -g. Turned out that bugpoint subprocesses (opt, etc) were crashing and doing symbolization - but bugpoint runs those subprocesses with a 400MB memory limit. So with plain -g, mmaping the opt binary would exceed the memory limit, fail, and thus be really fast - no symbolization occurred. Whereas with -gsplit-dwarf, comically, having less to map in, it would succeed and then spend lots of time symbolizing. I've fixed at least the critical part of bugpoint's perf problem there by adding an option to allow bugpoint to disable symbolization. Thus improving the perfromance for -gsplit-dwarf and making the -g-esque speed available without this quirk/accidental benefit. llvm-svn: 305242
This commit is contained in:
parent
d5e999f130
commit
602a5bbb32
|
@ -163,16 +163,6 @@ static void SetMemoryLimits (unsigned size)
|
|||
r.rlim_cur = limit;
|
||||
setrlimit (RLIMIT_RSS, &r);
|
||||
#endif
|
||||
#ifdef RLIMIT_AS // e.g. NetBSD doesn't have it.
|
||||
// Don't set virtual memory limit if built with any Sanitizer. They need 80Tb
|
||||
// of virtual memory for shadow memory mapping.
|
||||
#if !LLVM_MEMORY_SANITIZER_BUILD && !LLVM_ADDRESS_SANITIZER_BUILD
|
||||
// Virtual memory.
|
||||
getrlimit (RLIMIT_AS, &r);
|
||||
r.rlim_cur = limit;
|
||||
setrlimit (RLIMIT_AS, &r);
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue