GCC memory consumption increased by recent patch!

gcctest@suse.de gcctest@suse.de
Tue Feb 15 19:11:00 GMT 2005


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


comparing combine.c compilation at -O0 level:
    Overall memory needed: 24661k
    Peak memory use before GGC: 9359k
    Peak memory use after GGC: 8673k
    Maximum of released memory in single GGC run: 2864k
    Garbage: 41665k
    Leak: 6395k
    Overhead: 5773k
    GGC runs: 327

comparing combine.c compilation at -O1 level:
    Overall memory needed: 25529k
    Peak memory use before GGC: 9236k
    Peak memory use after GGC: 8740k
    Maximum of released memory in single GGC run: 2028k
    Garbage: 60286k
    Leak: 6752k
    Overhead: 9904k
    GGC runs: 500

comparing combine.c compilation at -O2 level:
    Overall memory needed: 29141k -> 29145k
    Peak memory use before GGC: 12671k
    Peak memory use after GGC: 12545k
    Maximum of released memory in single GGC run: 2597k
    Garbage: 78219k
    Leak: 6593k
    Overhead: 13952k
    GGC runs: 508

comparing combine.c compilation at -O3 level:
    Overall memory needed: 31577k
    Peak memory use before GGC: 12773k
    Peak memory use after GGC: 12545k
    Maximum of released memory in single GGC run: 3407k
    Garbage: 105570k
    Leak: 7104k
    Overhead: 18721k
    GGC runs: 577

comparing insn-attrtab.c compilation at -O0 level:
    Overall memory needed: 114136k
    Peak memory use before GGC: 74747k
    Peak memory use after GGC: 45493k
    Maximum of released memory in single GGC run: 39340k
    Garbage: 152668k
    Leak: 10984k
    Overhead: 19970k
    GGC runs: 274

comparing insn-attrtab.c compilation at -O1 level:
  Overall memory allocated via mmap and sbrk increased from 124228k to 124644k, overall 0.33%
    Overall memory needed: 124228k -> 124644k
    Peak memory use before GGC: 78756k
    Peak memory use after GGC: 70103k
    Maximum of released memory in single GGC run: 40779k
    Garbage: 366124k
    Leak: 11361k
    Overhead: 69303k
    GGC runs: 396

comparing insn-attrtab.c compilation at -O2 level:
    Overall memory needed: 147328k
    Peak memory use before GGC: 98356k
    Peak memory use after GGC: 83473k
    Maximum of released memory in single GGC run: 39384k
    Garbage: 479990k
    Leak: 11242k
    Overhead: 84391k
    GGC runs: 340

comparing insn-attrtab.c compilation at -O3 level:
    Overall memory needed: 147356k
    Peak memory use before GGC: 98358k
    Peak memory use after GGC: 83475k
    Maximum of released memory in single GGC run: 39384k
    Garbage: 480803k
    Leak: 11279k
    Overhead: 84520k
    GGC runs: 346

comparing Gerald's testcase PR8361 compilation at -O0 level:
    Overall memory needed: 111056k
    Peak memory use before GGC: 87156k
    Peak memory use after GGC: 85895k
    Maximum of released memory in single GGC run: 19511k
    Garbage: 246085k
    Leak: 55523k
    Overhead: 43324k
    GGC runs: 366

comparing Gerald's testcase PR8361 compilation at -O1 level:
    Overall memory needed: 103913k -> 103905k
    Peak memory use before GGC: 86014k
    Peak memory use after GGC: 85113k
    Maximum of released memory in single GGC run: 18951k
    Garbage: 433596k
    Leak: 56857k
    Overhead: 64546k
    GGC runs: 511

comparing Gerald's testcase PR8361 compilation at -O2 level:
    Overall memory needed: 104133k
    Peak memory use before GGC: 86014k
    Peak memory use after GGC: 85114k
    Maximum of released memory in single GGC run: 18951k
    Garbage: 475756k
    Leak: 57425k
    Overhead: 74090k
    GGC runs: 571

comparing Gerald's testcase PR8361 compilation at -O3 level:
    Overall memory needed: 105209k
    Peak memory use before GGC: 87150k
    Peak memory use after GGC: 86193k
    Maximum of released memory in single GGC run: 19400k
    Garbage: 480391k
    Leak: 57571k
    Overhead: 74690k
    GGC runs: 557

Head of changelog is:

--- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-02-14 23:11:32.000000000 +0000
+++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-02-15 09:09:53.000000000 +0000
@@ -1,3 +1,15 @@
+2005-02-14  Kazu Hirata  <kazu@cs.umass.edu>
+
+	* basic-block.h: Adjust the prototype for find_basic_blocks.
+	* cfgbuild.c (find_basic_blocks): Remove unused arguments.
+	* passes.c (rest_of_handle_loop_optimize): Adjust the call to
+	find_basic_blocks.
+
+	* flow.c (recompute_reg_usage): Remove all arguments.
+	* passes.c (rest_of_compilation): Adjust the call to
+	recompute_reg_usage.
+	* rtl.h: Adjust the prototype for recompute_reg_usage.
+
 2005-02-14  Daniel Berlin  <dberlin@dberlin.org>
 	
 	* tree-dump.c (dump_files): Update to reflect new member

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

The results can be reproduced by building 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.

Yours testing script.



More information about the Gcc-regression mailing list