lkml.org 
[lkml]   [2014]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 13/19] Kbuild, lto: Set TMPDIR for LTO v2
    Date
    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 933e1de..23629a9 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


    \
     
     \ /
      Last update: 2014-02-15 00:01    [W:4.396 / U:0.368 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site