This is the mail archive of the gcc-regression@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

A recent patch increased GCC's memory consumption!


Hi,

I am a friendly script caring about memory consumption in GCC.  Please
contact jh@suse.cz if something is going wrong.

Comparing memory consumption on compilation of combine.i, insn-attrtab.i,
and generate-3.4.ii I got:


comparing combine.c compilation at -O0 level:
    Overall memory needed: 24997k
    Peak memory use before GGC: 9600k
    Peak memory use after GGC: 8947k
    Maximum of released memory in single GGC run: 2737k
    Garbage: 40106k
    Leak: 6665k
    Overhead: 5745k
    GGC runs: 317

comparing combine.c compilation at -O1 level:
    Overall memory needed: 26824k
    Peak memory use before GGC: 17368k
    Peak memory use after GGC: 17185k
    Maximum of released memory in single GGC run: 2372k
    Garbage: 60901k
    Leak: 6848k
    Overhead: 7555k
    GGC runs: 389

comparing combine.c compilation at -O2 level:
    Overall memory needed: 26824k
    Peak memory use before GGC: 17370k
    Peak memory use after GGC: 17185k
    Maximum of released memory in single GGC run: 2453k
    Garbage: 77593k
    Leak: 6940k
    Overhead: 9997k
    GGC runs: 458

comparing combine.c compilation at -O3 level:
    Overall memory needed: 26824k
    Peak memory use before GGC: 18373k
    Peak memory use after GGC: 18002k
    Maximum of released memory in single GGC run: 3521k
    Garbage: 108307k
    Leak: 7022k
    Overhead: 13575k
    GGC runs: 510

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 80920k
    Peak memory use before GGC: 69474k
    Peak memory use after GGC: 45012k
    Maximum of released memory in single GGC run: 36247k
    Garbage: 146441k
    Leak: 10057k
    Overhead: 19752k
    GGC runs: 251

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 112088k
    Peak memory use before GGC: 94462k
    Peak memory use after GGC: 83561k
    Maximum of released memory in single GGC run: 32588k
    Garbage: 296189k
    Leak: 10036k
    Overhead: 36707k
    GGC runs: 247

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 125656k
    Peak memory use before GGC: 111817k
    Peak memory use after GGC: 83518k
    Maximum of released memory in single GGC run: 32172k
    Garbage: 381080k
    Leak: 10142k
    Overhead: 48227k
    GGC runs: 275

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 125708k
    Peak memory use before GGC: 111846k
    Peak memory use after GGC: 83547k
    Maximum of released memory in single GGC run: 32497k
    Garbage: 381664k
    Leak: 10147k
    Overhead: 48379k
    GGC runs: 277

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 118388k
    Peak memory use before GGC: 95145k
    Peak memory use after GGC: 94197k
    Maximum of released memory in single GGC run: 20460k
    Garbage: 223586k
    Leak: 49217k
    Overhead: 36706k
    GGC runs: 370

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 105512k
    Peak memory use before GGC: 95273k
    Peak memory use after GGC: 93199k
    Maximum of released memory in single GGC run: 20343k
    Garbage: 567522k -> 567799k
    Leak: 54986k -> 54987k
    Overhead: 67977k -> 68019k
    GGC runs: 522

comparing Gerald's testcase PR8361 compilation at -O2 level:
  Amount of produced GGC garbage increased from 649673k to 650596k, overall 0.14%
    Overall memory needed: 106528k -> 106540k
    Peak memory use before GGC: 95274k
    Peak memory use after GGC: 93199k
    Maximum of released memory in single GGC run: 20343k
    Garbage: 649673k -> 650596k
    Leak: 55809k -> 55810k
    Overhead: 79025k -> 79118k
    GGC runs: 585 -> 584

comparing Gerald's testcase PR8361 compilation at -O3 level:
  Amount of produced GGC garbage increased from 708255k to 709835k, overall 0.22%
    Overall memory needed: 109504k -> 109548k
    Peak memory use before GGC: 96742k
    Peak memory use after GGC: 94277k
    Maximum of released memory in single GGC run: 20839k
    Garbage: 708255k -> 709835k
    Leak: 57066k -> 57080k
    Overhead: 83994k -> 84106k
    GGC runs: 593 -> 595

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-12-10 21:33:52.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-12-11 07:57:20.000000000 +0000
@@ -1,3 +1,9 @@
+2005-12-10  Mark Mitchell  <mark@codesourcery.com>
+
+	PR c++/25010
+	* ipa-inline.c (cgraph_clone_inlined_nodes): Do not assume that
+	DECL_EXTERNAL functions have no bodies.  Tidy.
+
 2005-12-10  Andreas Schwab  <schwab@suse.de>
 
 	* except.c (switch_to_exception_section): Only define if
--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog.cp	2005-12-08 17:30:09.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/cp/ChangeLog	2005-12-11 07:57:20.000000000 +0000
@@ -1,3 +1,9 @@
+2005-12-10  Terry Laurenzo  <tlaurenzo@gmail.com>
+
+	PR java/9861
+	* mangle.c (write_bare_function_type): Mangle return type for
+	methods of Java classes
+
 2005-12-08  Th?odore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
 	
 	* call.c (build_conditional_expr): Print types in error messages.


The results can be reproduced by building a compiler with

--enable-gather-detailed-mem-stats targetting x86-64

and compiling preprocessed combine.c or testcase from PR8632 with:

-fmem-report --param=ggc-min-heapsize=1024 --param=ggc-min-expand=1 -Ox -Q

The memory consumption summary appears in the dump after detailed listing
of the places they are allocated in.  Peak memory consumption is actually
computed by looking for maximal value in {GC XXXX -> YYYY} report.

Your testing script.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]