linux-kbuild.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andi Kleen <andi@firstfloor.org>
To: linux-kernel@vger.kernel.org
Cc: sam@ravnborg.org, x86@kernel.org, linux-kbuild@vger.kernel.org,
	Andi Kleen <ak@linux.intel.com>
Subject: [PATCH 13/20] Kbuild, lto: Set TMPDIR for LTO v2
Date: Tue, 18 Feb 2014 15:28:51 +0100	[thread overview]
Message-ID: <1392733738-8290-14-git-send-email-andi@firstfloor.org> (raw)
In-Reply-To: <1392733738-8290-1-git-send-email-andi@firstfloor.org>

From: Andi Kleen <ak@linux.intel.com>

LTO gcc puts a lot of data into $TMPDIR, essentially another copy
of the object directory to pass the repartitioned object files
to the code generation processes.

TMPDIR defaults to /tmp With /tmp as tmpfs it's easy to drive systems to
out of memory, because they will compete with the already high anonymous
memory consumption of the wpa LTO pass.

When LTO is set always set TMPDIR to the object directory. This could
be slightly slower, but is far safer and eliminates another parameter
the LTO user would need to set manually.

I made it conditional on LTO for now.

v2: Allow user to override (H. Peter Anvin)
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
 Makefile | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/Makefile b/Makefile
index 893d6f0..0fd460b 100644
--- a/Makefile
+++ b/Makefile
@@ -407,6 +407,14 @@ export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE
 export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL
 export KBUILD_ARFLAGS
 
+ifdef CONFIG_LTO
+# LTO gcc creates a lot of files in TMPDIR, and with /tmp as tmpfs
+# it's easy to drive the machine OOM. Use the object directory
+# instead
+TMPDIR ?= ${objtree}
+export TMPDIR
+endif
+
 # When compiling out-of-tree modules, put MODVERDIR in the module
 # tree rather than in the kernel tree. The kernel tree might
 # even be read-only.
-- 
1.8.5.2


  parent reply	other threads:[~2014-02-18 14:29 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-18 14:28 Link Time Optimization patchkit v3 Andi Kleen
2014-02-18 14:28 ` [PATCH 01/20] x86, lto: Disable LTO for the x86 VDSO Andi Kleen
2014-02-18 14:28 ` [PATCH 02/20] lto: Disable LTO for hweight functions Andi Kleen
2014-02-18 14:28 ` [PATCH 03/20] lto: Make asmlinkage __visible Andi Kleen
2014-02-18 14:28 ` [PATCH 04/20] lto, workaround: Add workaround for initcall reordering Andi Kleen
2014-02-18 14:28 ` [PATCH 05/20] lto: Handle LTO common symbols in module loader Andi Kleen
2014-02-18 14:53   ` Konrad Rzeszutek Wilk
2014-02-18 14:28 ` [PATCH 06/20] lto: Disable LTO for sys_ni Andi Kleen
2014-02-18 14:28 ` [PATCH 07/20] lto: Don't let LATENCYTOP and LOCKDEP select KALLSYMS_ALL Andi Kleen
2014-02-18 14:28 ` [PATCH 08/20] Kbuild, lto, workaround: Don't warn for initcall_reference in modpost Andi Kleen
2014-02-18 14:28 ` [PATCH 09/20] Kbuild, lto: Drop .number postfixes " Andi Kleen
2014-02-18 14:28 ` [PATCH 10/20] Kbuild, lto: add ld-version and ld-ifversion macros Andi Kleen
2014-02-18 14:28 ` [PATCH 11/20] Kbuild, lto: Add a gcc-ld script to let run gcc as ld Andi Kleen
2014-02-18 14:28 ` [PATCH 12/20] Kbuild, lto: Disable LTO for asm-offsets.c Andi Kleen
2014-02-18 14:28 ` Andi Kleen [this message]
2014-02-18 14:35   ` [PATCH 13/20] Kbuild, lto: Set TMPDIR for LTO v2 H. Peter Anvin
2014-02-18 14:28 ` [PATCH 14/20] Kbuild, lto: Handle basic LTO in modpost Andi Kleen
2014-02-18 14:28 ` [PATCH 15/20] Kbuild, lto: Fix single pass kallsyms for LTO Andi Kleen
2014-02-18 14:28 ` [PATCH 16/20] Kbuild, lto: Add Link Time Optimization support v2 Andi Kleen
2014-02-18 14:28 ` [PATCH 17/20] Kbuild, bloat-o-meter: Ignore .lto_priv postfix Andi Kleen
2014-02-18 14:51   ` Konrad Rzeszutek Wilk
2014-02-18 14:28 ` [PATCH 18/20] lto: Mark spinlocks noinline when inline spinlocks are disabled Andi Kleen
2014-02-18 14:28 ` [PATCH 19/20] lto, module: Warn about modules that are not fully LTOed Andi Kleen
2014-02-18 14:50   ` Konrad Rzeszutek Wilk
2014-02-18 18:52     ` Andi Kleen
2014-02-18 14:28 ` [PATCH 20/20] lto: Don't inline __const_udelay Andi Kleen
2014-02-18 14:34 ` Link Time Optimization patchkit v3 H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1392733738-8290-14-git-send-email-andi@firstfloor.org \
    --to=andi@firstfloor.org \
    --cc=ak@linux.intel.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sam@ravnborg.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).