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: 24928k
    Peak memory use before GGC: 9717k
    Peak memory use after GGC: 9064k
    Maximum of released memory in single GGC run: 2816k
    Garbage: 42335k
    Leak: 6720k
    Overhead: 5837k
    GGC runs: 335

comparing combine.c compilation at -O1 level:
    Overall memory needed: 24372k
    Peak memory use before GGC: 17710k
    Peak memory use after GGC: 17517k
    Maximum of released memory in single GGC run: 2468k
    Garbage: 67909k
    Leak: 7030k
    Overhead: 8038k
    GGC runs: 419

comparing combine.c compilation at -O2 level:
    Overall memory needed: 24380k
    Peak memory use before GGC: 17718k
    Peak memory use after GGC: 17517k
    Maximum of released memory in single GGC run: 2616k
    Garbage: 87247k -> 87241k
    Leak: 7207k
    Overhead: 10769k -> 10768k
    GGC runs: 484 -> 485

comparing combine.c compilation at -O3 level:
  Amount of memory still referenced at the end of compilation increased from 7289k to 7305k, overall 0.22%
    Overall memory needed: 24836k -> 24840k
    Peak memory use before GGC: 17968k
    Peak memory use after GGC: 17549k
    Maximum of released memory in single GGC run: 3439k
    Garbage: 115962k -> 115941k
    Leak: 7289k -> 7305k
    Overhead: 14322k -> 14317k
    GGC runs: 533 -> 534

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 83372k
    Peak memory use before GGC: 71655k
    Peak memory use after GGC: 45752k
    Maximum of released memory in single GGC run: 37689k
    Garbage: 151641k
    Leak: 11560k
    Overhead: 18881k
    GGC runs: 267

comparing insn-attrtab.c compilation at -O1 level:
    Overall memory needed: 116668k
    Peak memory use before GGC: 99408k
    Peak memory use after GGC: 88890k
    Maximum of released memory in single GGC run: 33484k
    Garbage: 298292k
    Leak: 11427k
    Overhead: 35521k
    GGC runs: 290

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 155568k
    Peak memory use before GGC: 118554k
    Peak memory use after GGC: 88864k
    Maximum of released memory in single GGC run: 33619k
    Garbage: 392905k
    Leak: 11515k
    Overhead: 47614k
    GGC runs: 329

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 155560k
    Peak memory use before GGC: 118558k
    Peak memory use after GGC: 88866k
    Maximum of released memory in single GGC run: 33619k
    Garbage: 393708k
    Leak: 11535k
    Overhead: 47731k
    GGC runs: 334

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 124856k
    Peak memory use before GGC: 100707k
    Peak memory use after GGC: 99710k
    Maximum of released memory in single GGC run: 21552k
    Garbage: 230928k
    Leak: 53150k
    Overhead: 39837k
    GGC runs: 337

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 108900k
    Peak memory use before GGC: 99624k
    Peak memory use after GGC: 98632k
    Maximum of released memory in single GGC run: 20596k
    Garbage: 645616k
    Leak: 58288k
    Overhead: 80487k
    GGC runs: 525

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 109484k -> 109488k
    Peak memory use before GGC: 99624k
    Peak memory use after GGC: 98632k
    Maximum of released memory in single GGC run: 20595k
    Garbage: 736972k -> 737005k
    Leak: 58987k -> 58971k
    Overhead: 97642k -> 97649k
    GGC runs: 588 -> 589

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 111916k -> 111932k
    Peak memory use before GGC: 101141k
    Peak memory use after GGC: 100133k
    Maximum of released memory in single GGC run: 21090k
    Garbage: 779883k -> 779874k
    Leak: 60171k -> 60171k
    Overhead: 101732k -> 101731k
    GGC runs: 595

Head of the ChangeLog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-07-03 14:36:37.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-07-03 19:06:14.000000000 +0000
@@ -1,3 +1,18 @@
+2005-07-03  Kazu Hirata  <kazu@codesourcery.com>
+
+	* c-decl.c, tree-object-size.c, tree-vectorizer.c,
+	config/arm/unwind-arm.c, config/arm/unwind-arm.h: Fix comment
+	typos.
+
+2005-07-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+	* pa.c (fix_range): Fix typo in comment.
+
+2005-07-03  Kazu Hirata  <kazu@codesourcery.com>
+
+	* tree-vrp.c (extract_range_from_assert): Replace
+	fold (build (...)) with fold_build2.
+
 2005-07-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 	* c-format.c (gcc_gfc_format_type, gcc_gfc_flag_pairs,


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]