1
1
mirror of https://github.com/rui314/mold.git synced 2024-09-11 21:17:28 +03:00

Enable transparent huge pages for output file if THP is available

This commit is contained in:
Rui Ueyama 2022-10-23 18:13:46 +08:00
parent 585eae2030
commit 626619a8b0

View File

@ -133,6 +133,19 @@ OutputFile<C>::open(C &ctx, std::string path, i64 filesize, i64 perm) {
else
file = new MemoryMappedOutputFile<C>(ctx, path, filesize, perm);
#ifdef MADV_HUGEPAGE
// Enable transparent huge page for an output memory-mapped file.
// On Linux, it has an effect only on tmpfs mounted with `huge=advise`,
// but it can make the linker ~10% faster. You can try it by creating
// a tmpfs with the following commands
//
// $ mkdir tmp
// $ sudo mount -t tmpfs -o size=2G,huge=advise none tmp
//
// and then specifying a path under the directory as an output file.
madvise(file->buf, filesize, MADV_HUGEPAGE);
#endif
if (ctx.arg.filler != -1)
memset(file->buf, ctx.arg.filler, filesize);
return std::unique_ptr<OutputFile<C>>(file);