forked from OSchip/llvm-project
91dc545bf2
It turned out that at dynamic shared library mode, the memory access pattern can increase memory footprint significantly on OS when transparent hugepages (THP) are enabled. This could cause >70x memory overhead than running a static linked binary. For example, a static binary with RSS overhead 300M can use > 23G RSS if it is built dynamically. /proc/../smaps shows in 6204552 kB RSS 6141952 kB relates to AnonHugePages. Also such a high RSS happens in some rate: around 25% runs may use > 23G RSS, the rest uses in between 6-23G. I guess this may relate to how user memory is allocated and distributted across huge pages. THP is a trade-off between time and space. We have a flag no_huge_pages_for_shadow for sanitizer. It is true by default but DFSan did not follow this. Depending on if a target is built statically or dynamically, maybe Clang can set no_huge_pages_for_shadow accordingly after this change. But it still seems fine to follow the default setting of no_huge_pages_for_shadow. If time is an issue, and users are fine with high RSS, this flag can be set to false selectively. |
||
---|---|---|
.. | ||
scripts | ||
.clang-format | ||
CMakeLists.txt | ||
dfsan.cpp | ||
dfsan.h | ||
dfsan.syms.extra | ||
dfsan_custom.cpp | ||
dfsan_flags.inc | ||
dfsan_interceptors.cpp | ||
dfsan_platform.h | ||
done_abilist.txt | ||
libc_ubuntu1404_abilist.txt |