This is the mail archive of the
gcc-regression@gcc.gnu.org
mailing list for the GCC project.
A recent patch increased GCC's memory consumption!
- From: gcctest at suse dot de
- To: jh at suse dot cz, hubicka at ucw dot cz, gcc-regression at gcc dot gnu dot org
- Date: Sun, 31 May 2009 05:19:20 +0000
- Subject: 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 empty function compilation at -O0 level:
Overall memory needed: 8801k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 86k
Garbage: 219k
Leak: 1537k
Overhead: 187k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O0 -g level:
Overall memory needed: 8825k
Peak memory use before GGC: 1516k
Peak memory use after GGC: 1464k
Maximum of released memory in single GGC run: 87k
Garbage: 220k
Leak: 1569k
Overhead: 192k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O1 level:
Overall memory needed: 8929k -> 8801k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 90k
Garbage: 224k
Leak: 1537k
Overhead: 188k
GGC runs: 4
Pre-IPA-Garbage: 212k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 212k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O2 level:
Overall memory needed: 8929k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 88k
Garbage: 229k
Leak: 1537k
Overhead: 189k
GGC runs: 5
Pre-IPA-Garbage: 212k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 212k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O3 level:
Overall memory needed: 8929k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 88k
Garbage: 229k
Leak: 1537k
Overhead: 189k
GGC runs: 5
Pre-IPA-Garbage: 212k
Pre-IPA-Leak: 1540k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 212k
Post-IPA-Leak: 1540k
Post-IPA-Overhead: 186k
comparing combine.c compilation at -O0 level:
Overall memory needed: 31453k
Peak memory use before GGC: 17484k
Peak memory use after GGC: 17031k
Maximum of released memory in single GGC run: 1913k
Garbage: 37964k
Leak: 7161k
Overhead: 5496k
GGC runs: 333
Pre-IPA-Garbage: 12532k
Pre-IPA-Leak: 18412k
Pre-IPA-Overhead: 2504k
Post-IPA-Garbage: 12532k
Post-IPA-Leak: 18412k
Post-IPA-Overhead: 2504k
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 33369k
Peak memory use before GGC: 19390k
Peak memory use after GGC: 18870k
Maximum of released memory in single GGC run: 1923k
Garbage: 38166k
Leak: 10429k
Overhead: 6308k -> 6308k
GGC runs: 315
Pre-IPA-Garbage: 12551k
Pre-IPA-Leak: 20661k
Pre-IPA-Overhead: 2986k
Post-IPA-Garbage: 12551k
Post-IPA-Leak: 20661k
Post-IPA-Overhead: 2986k
comparing combine.c compilation at -O1 level:
Amount of memory still referenced at the end of compilation increased from 7156k to 7168k, overall 0.17%
Overall memory needed: 32097k -> 32081k
Peak memory use before GGC: 16554k
Peak memory use after GGC: 16381k
Maximum of released memory in single GGC run: 1379k
Garbage: 46007k
Leak: 7156k -> 7168k
Overhead: 6458k -> 6458k
GGC runs: 388
Pre-IPA-Garbage: 13407k
Pre-IPA-Leak: 17703k
Pre-IPA-Overhead: 2552k
Post-IPA-Garbage: 13407k
Post-IPA-Leak: 17703k
Post-IPA-Overhead: 2552k
comparing combine.c compilation at -O2 level:
Overall memory needed: 33173k -> 32997k
Peak memory use before GGC: 16618k
Peak memory use after GGC: 16448k
Maximum of released memory in single GGC run: 1491k
Garbage: 56639k -> 56639k
Leak: 7217k
Overhead: 8100k -> 8100k
GGC runs: 443
Pre-IPA-Garbage: 13436k
Pre-IPA-Leak: 17725k
Pre-IPA-Overhead: 2555k
Post-IPA-Garbage: 13436k
Post-IPA-Leak: 17725k
Post-IPA-Overhead: 2555k
comparing combine.c compilation at -O3 level:
Overall memory needed: 37249k -> 37153k
Peak memory use before GGC: 16718k
Peak memory use after GGC: 16552k
Maximum of released memory in single GGC run: 1683k
Garbage: 80806k -> 80811k
Leak: 7278k
Overhead: 11089k -> 11090k
GGC runs: 529 -> 528
Pre-IPA-Garbage: 13436k
Pre-IPA-Leak: 17760k
Pre-IPA-Overhead: 2555k
Post-IPA-Garbage: 13436k
Post-IPA-Leak: 17760k
Post-IPA-Overhead: 2555k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 152501k -> 152505k
Peak memory use before GGC: 65256k
Peak memory use after GGC: 52819k
Maximum of released memory in single GGC run: 26251k
Garbage: 128610k
Leak: 9591k
Overhead: 16694k
GGC runs: 258
Pre-IPA-Garbage: 40783k
Pre-IPA-Leak: 51014k
Pre-IPA-Overhead: 7761k
Post-IPA-Garbage: 40783k
Post-IPA-Leak: 51014k
Post-IPA-Overhead: 7761k
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 153825k
Peak memory use before GGC: 66521k
Peak memory use after GGC: 54081k
Maximum of released memory in single GGC run: 26252k
Garbage: 128933k
Leak: 11222k
Overhead: 17147k
GGC runs: 252
Pre-IPA-Garbage: 40792k
Pre-IPA-Leak: 52539k
Pre-IPA-Overhead: 8091k
Post-IPA-Garbage: 40792k
Post-IPA-Leak: 52539k
Post-IPA-Overhead: 8091k
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 154557k -> 154425k
Peak memory use before GGC: 54974k
Peak memory use after GGC: 44904k
Maximum of released memory in single GGC run: 17234k
Garbage: 181164k
Leak: 9182k
Overhead: 23431k
GGC runs: 298
Pre-IPA-Garbage: 45256k
Pre-IPA-Leak: 45117k
Pre-IPA-Overhead: 7607k
Post-IPA-Garbage: 45256k
Post-IPA-Leak: 45117k
Post-IPA-Overhead: 7607k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 202381k -> 202197k
Peak memory use before GGC: 54436k
Peak memory use after GGC: 44668k
Maximum of released memory in single GGC run: 18698k
Garbage: 211801k
Leak: 9218k
Overhead: 29318k
GGC runs: 331
Pre-IPA-Garbage: 45281k
Pre-IPA-Leak: 45121k
Pre-IPA-Overhead: 7609k
Post-IPA-Garbage: 45281k
Post-IPA-Leak: 45121k
Post-IPA-Overhead: 7609k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 205729k -> 205693k
Peak memory use before GGC: 54449k
Peak memory use after GGC: 44680k -> 44676k
Maximum of released memory in single GGC run: 18680k
Garbage: 230141k
Leak: 9237k
Overhead: 31241k -> 31241k
GGC runs: 353
Pre-IPA-Garbage: 45281k
Pre-IPA-Leak: 45121k
Pre-IPA-Overhead: 7609k
Post-IPA-Garbage: 45281k
Post-IPA-Leak: 45121k
Post-IPA-Overhead: 7609k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 146461k -> 146429k
Peak memory use before GGC: 81548k
Peak memory use after GGC: 80740k
Maximum of released memory in single GGC run: 13881k
Garbage: 195498k
Leak: 55823k
Overhead: 29072k
GGC runs: 441
Pre-IPA-Garbage: 105344k
Pre-IPA-Leak: 84661k
Pre-IPA-Overhead: 15579k
Post-IPA-Garbage: 105344k
Post-IPA-Leak: 84661k
Post-IPA-Overhead: 15579k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 163889k -> 163909k
Peak memory use before GGC: 95759k
Peak memory use after GGC: 94810k
Maximum of released memory in single GGC run: 14051k
Garbage: 201062k -> 201062k
Leak: 83080k
Overhead: 35639k
GGC runs: 412
Pre-IPA-Garbage: 105846k
Pre-IPA-Leak: 101111k
Pre-IPA-Overhead: 19072k
Post-IPA-Garbage: 105846k
Post-IPA-Leak: 101111k
Post-IPA-Overhead: 19072k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 107869k -> 107945k
Peak memory use before GGC: 81549k
Peak memory use after GGC: 80741k
Maximum of released memory in single GGC run: 13844k
Garbage: 270755k -> 270756k
Leak: 52421k
Overhead: 32027k -> 32027k
GGC runs: 526
Pre-IPA-Garbage: 153192k
Pre-IPA-Leak: 85862k
Pre-IPA-Overhead: 19154k -> 19154k
Post-IPA-Garbage: 153192k
Post-IPA-Leak: 85862k
Post-IPA-Overhead: 19154k -> 19154k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 107477k -> 107705k
Peak memory use before GGC: 81323k -> 81324k
Peak memory use after GGC: 80299k
Maximum of released memory in single GGC run: 13840k
Garbage: 307097k
Leak: 52595k
Overhead: 37234k -> 37234k
GGC runs: 572
Pre-IPA-Garbage: 156507k
Pre-IPA-Leak: 85153k
Pre-IPA-Overhead: 19383k
Post-IPA-Garbage: 156507k
Post-IPA-Leak: 85153k
Post-IPA-Overhead: 19383k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 113841k -> 113949k
Peak memory use before GGC: 81790k -> 81789k
Peak memory use after GGC: 80299k
Maximum of released memory in single GGC run: 13840k
Garbage: 337682k -> 337681k
Leak: 52633k
Overhead: 40848k -> 40848k
GGC runs: 610
Pre-IPA-Garbage: 156507k
Pre-IPA-Leak: 85157k
Pre-IPA-Overhead: 19383k
Post-IPA-Garbage: 156507k
Post-IPA-Leak: 85157k
Post-IPA-Overhead: 19383k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 358765k -> 358677k
Peak memory use before GGC: 78174k
Peak memory use after GGC: 49108k
Maximum of released memory in single GGC run: 37058k
Garbage: 140207k
Leak: 7712k
Overhead: 24962k
GGC runs: 86
Pre-IPA-Garbage: 12171k
Pre-IPA-Leak: 18627k
Pre-IPA-Overhead: 2403k
Post-IPA-Garbage: 12171k
Post-IPA-Leak: 18627k
Post-IPA-Overhead: 2403k
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 359477k -> 359513k
Peak memory use before GGC: 78855k
Peak memory use after GGC: 49789k
Maximum of released memory in single GGC run: 37038k
Garbage: 140270k
Leak: 9706k
Overhead: 25530k
GGC runs: 94
Pre-IPA-Garbage: 12173k
Pre-IPA-Leak: 18873k
Pre-IPA-Overhead: 2456k
Post-IPA-Garbage: 12173k
Post-IPA-Leak: 18873k
Post-IPA-Overhead: 2456k
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 347829k -> 347817k
Peak memory use before GGC: 94212k
Peak memory use after GGC: 82936k
Maximum of released memory in single GGC run: 47307k
Garbage: 256021k
Leak: 9536k
Overhead: 35485k
GGC runs: 97
Pre-IPA-Garbage: 42051k
Pre-IPA-Leak: 64580k
Pre-IPA-Overhead: 7108k
Post-IPA-Garbage: 42051k
Post-IPA-Leak: 64580k
Post-IPA-Overhead: 7108k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 669073k -> 663637k
Peak memory use before GGC: 90305k
Peak memory use after GGC: 82937k
Maximum of released memory in single GGC run: 38641k
Garbage: 302308k
Leak: 11373k
Overhead: 50853k
GGC runs: 108
Pre-IPA-Garbage: 84972k
Pre-IPA-Leak: 86483k
Pre-IPA-Overhead: 11064k
Post-IPA-Garbage: 84972k
Post-IPA-Leak: 86483k
Post-IPA-Overhead: 11064k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1234549k -> 1234261k
Peak memory use before GGC: 133837k
Peak memory use after GGC: 126292k
Maximum of released memory in single GGC run: 51245k
Garbage: 347523k
Leak: 10290k
Overhead: 43799k
GGC runs: 107
Pre-IPA-Garbage: 84972k
Pre-IPA-Leak: 86483k
Pre-IPA-Overhead: 11064k
Post-IPA-Garbage: 84972k
Post-IPA-Leak: 86483k
Post-IPA-Overhead: 11064k
Head of the ChangeLog is:
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.