A recent patch increased GCC's memory consumption!
gcctest@suse.de
gcctest@suse.de
Sat May 23 07:38:00 GMT 2009
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: 85k
Garbage: 218k
Leak: 1537k
Overhead: 187k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1539k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1539k
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: 219k
Leak: 1570k
Overhead: 192k
GGC runs: 4
Pre-IPA-Garbage: 210k
Pre-IPA-Leak: 1539k
Pre-IPA-Overhead: 186k
Post-IPA-Garbage: 210k
Post-IPA-Leak: 1539k
Post-IPA-Overhead: 186k
comparing empty function compilation at -O1 level:
Overall memory needed: 8909k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 87k
Garbage: 220k
Leak: 1537k
Overhead: 188k
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 -O2 level:
Overall memory needed: 8929k -> 8925k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 92k
Garbage: 226k
Leak: 1537k
Overhead: 189k
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 -O3 level:
Overall memory needed: 8933k
Peak memory use before GGC: 1488k
Peak memory use after GGC: 1437k
Maximum of released memory in single GGC run: 92k
Garbage: 226k
Leak: 1537k
Overhead: 189k
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 combine.c compilation at -O0 level:
Amount of memory still referenced at the end of compilation increased from 7157k to 7173k, overall 0.22%
Overall memory needed: 31445k
Peak memory use before GGC: 17469k
Peak memory use after GGC: 17020k
Maximum of released memory in single GGC run: 1910k
Garbage: 37904k
Leak: 7157k -> 7173k
Overhead: 5493k -> 5493k
GGC runs: 331
Pre-IPA-Garbage: 12540k
Pre-IPA-Leak: 18404k
Pre-IPA-Overhead: 2506k
Post-IPA-Garbage: 12540k
Post-IPA-Leak: 18404k
Post-IPA-Overhead: 2506k
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 33369k
Peak memory use before GGC: 19377k
Peak memory use after GGC: 18859k
Maximum of released memory in single GGC run: 1920k
Garbage: 38119k
Leak: 10443k
Overhead: 6305k -> 6305k
GGC runs: 315
Pre-IPA-Garbage: 12559k
Pre-IPA-Leak: 20652k
Pre-IPA-Overhead: 2988k
Post-IPA-Garbage: 12559k
Post-IPA-Leak: 20652k
Post-IPA-Overhead: 2988k
comparing combine.c compilation at -O1 level:
Overall memory needed: 32021k -> 31913k
Peak memory use before GGC: 16476k
Peak memory use after GGC: 16310k
Maximum of released memory in single GGC run: 1378k
Garbage: 45345k
Leak: 7158k
Overhead: 6391k -> 6391k
GGC runs: 387
Pre-IPA-Garbage: 12959k
Pre-IPA-Leak: 17622k
Pre-IPA-Overhead: 2502k
Post-IPA-Garbage: 12959k
Post-IPA-Leak: 17622k
Post-IPA-Overhead: 2502k
comparing combine.c compilation at -O2 level:
Overall memory needed: 32949k -> 32809k
Peak memory use before GGC: 16539k
Peak memory use after GGC: 16375k
Maximum of released memory in single GGC run: 1488k
Garbage: 56220k -> 56220k
Leak: 7191k
Overhead: 8012k -> 8012k
GGC runs: 441
Pre-IPA-Garbage: 13012k
Pre-IPA-Leak: 17645k
Pre-IPA-Overhead: 2508k
Post-IPA-Garbage: 13012k
Post-IPA-Leak: 17645k
Post-IPA-Overhead: 2508k
comparing combine.c compilation at -O3 level:
Overall memory needed: 33181k
Peak memory use before GGC: 16507k
Peak memory use after GGC: 16341k
Maximum of released memory in single GGC run: 1671k
Garbage: 65037k
Leak: 7213k
Overhead: 9285k -> 9285k
GGC runs: 471
Pre-IPA-Garbage: 13012k
Pre-IPA-Leak: 17645k
Pre-IPA-Overhead: 2508k
Post-IPA-Garbage: 13012k
Post-IPA-Leak: 17645k
Post-IPA-Overhead: 2508k
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 152477k -> 152505k
Peak memory use before GGC: 65254k
Peak memory use after GGC: 52818k
Maximum of released memory in single GGC run: 26250k
Garbage: 128569k
Leak: 9588k
Overhead: 16692k
GGC runs: 258
Pre-IPA-Garbage: 40782k
Pre-IPA-Leak: 51015k
Pre-IPA-Overhead: 7761k
Post-IPA-Garbage: 40782k
Post-IPA-Leak: 51015k
Post-IPA-Overhead: 7761k
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 153849k -> 153817k
Peak memory use before GGC: 66520k
Peak memory use after GGC: 54081k
Maximum of released memory in single GGC run: 26251k
Garbage: 128907k
Leak: 11220k
Overhead: 17145k
GGC runs: 252
Pre-IPA-Garbage: 40791k
Pre-IPA-Leak: 52540k
Pre-IPA-Overhead: 8092k
Post-IPA-Garbage: 40791k
Post-IPA-Leak: 52540k
Post-IPA-Overhead: 8092k
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 154685k
Peak memory use before GGC: 54960k
Peak memory use after GGC: 44890k
Maximum of released memory in single GGC run: 17233k
Garbage: 180928k
Leak: 9179k
Overhead: 23407k
GGC runs: 297
Pre-IPA-Garbage: 45067k
Pre-IPA-Leak: 45086k
Pre-IPA-Overhead: 7587k
Post-IPA-Garbage: 45067k
Post-IPA-Leak: 45086k
Post-IPA-Overhead: 7587k
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 202257k -> 202229k
Peak memory use before GGC: 54409k
Peak memory use after GGC: 44641k
Maximum of released memory in single GGC run: 18696k
Garbage: 211478k
Leak: 9193k
Overhead: 29279k -> 29279k
GGC runs: 330
Pre-IPA-Garbage: 45129k
Pre-IPA-Leak: 45093k
Pre-IPA-Overhead: 7592k
Post-IPA-Garbage: 45129k
Post-IPA-Leak: 45093k
Post-IPA-Overhead: 7592k
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 202273k -> 202237k
Peak memory use before GGC: 54409k
Peak memory use after GGC: 44641k -> 44637k
Maximum of released memory in single GGC run: 18695k
Garbage: 212699k
Leak: 9200k
Overhead: 29671k -> 29671k
GGC runs: 338
Pre-IPA-Garbage: 45129k
Pre-IPA-Leak: 45093k
Pre-IPA-Overhead: 7592k
Post-IPA-Garbage: 45129k
Post-IPA-Leak: 45093k
Post-IPA-Overhead: 7592k
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 146217k -> 146233k
Peak memory use before GGC: 81786k
Peak memory use after GGC: 80976k
Maximum of released memory in single GGC run: 13629k
Garbage: 193642k
Leak: 55468k
Overhead: 28789k
GGC runs: 439
Pre-IPA-Garbage: 105771k
Pre-IPA-Leak: 84581k
Pre-IPA-Overhead: 15541k
Post-IPA-Garbage: 105771k
Post-IPA-Leak: 84581k
Post-IPA-Overhead: 15541k
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 164009k -> 164021k
Peak memory use before GGC: 95912k
Peak memory use after GGC: 94960k
Maximum of released memory in single GGC run: 13880k
Garbage: 198964k -> 198964k
Leak: 82559k
Overhead: 35351k
GGC runs: 410
Pre-IPA-Garbage: 106356k
Pre-IPA-Leak: 101101k
Pre-IPA-Overhead: 19047k
Post-IPA-Garbage: 106356k
Post-IPA-Leak: 101101k
Post-IPA-Overhead: 19047k
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 107481k
Peak memory use before GGC: 81741k
Peak memory use after GGC: 80929k
Maximum of released memory in single GGC run: 13498k
Garbage: 255384k -> 255383k
Leak: 52267k
Overhead: 30243k -> 30243k
GGC runs: 510
Pre-IPA-Garbage: 145188k
Pre-IPA-Leak: 85972k
Pre-IPA-Overhead: 18513k
Post-IPA-Garbage: 145188k
Post-IPA-Leak: 85972k
Post-IPA-Overhead: 18513k
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 106861k -> 106921k
Peak memory use before GGC: 81660k
Peak memory use after GGC: 80084k
Maximum of released memory in single GGC run: 13522k
Garbage: 293517k -> 293517k
Leak: 52342k
Overhead: 35245k
GGC runs: 557
Pre-IPA-Garbage: 148349k
Pre-IPA-Leak: 85063k
Pre-IPA-Overhead: 18724k
Post-IPA-Garbage: 148349k
Post-IPA-Leak: 85063k
Post-IPA-Overhead: 18724k
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 107649k -> 107605k
Peak memory use before GGC: 82121k
Peak memory use after GGC: 80200k
Maximum of released memory in single GGC run: 13522k
Garbage: 312574k -> 312567k
Leak: 52351k
Overhead: 37762k -> 37761k
GGC runs: 580
Pre-IPA-Garbage: 148349k
Pre-IPA-Leak: 85068k
Pre-IPA-Overhead: 18725k
Post-IPA-Garbage: 148349k
Post-IPA-Leak: 85068k
Post-IPA-Overhead: 18725k
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 358685k -> 358701k
Peak memory use before GGC: 78173k
Peak memory use after GGC: 49107k
Maximum of released memory in single GGC run: 37057k
Garbage: 140190k
Leak: 7711k
Overhead: 24961k
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: 359521k
Peak memory use before GGC: 78856k
Peak memory use after GGC: 49791k
Maximum of released memory in single GGC run: 37041k
Garbage: 140255k
Leak: 9707k
Overhead: 25529k
GGC runs: 94
Pre-IPA-Garbage: 12173k
Pre-IPA-Leak: 18873k
Pre-IPA-Overhead: 2457k
Post-IPA-Garbage: 12173k
Post-IPA-Leak: 18873k
Post-IPA-Overhead: 2457k
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 208513k -> 208525k
Peak memory use before GGC: 74131k
Peak memory use after GGC: 69415k
Maximum of released memory in single GGC run: 35390k
Garbage: 216024k
Leak: 9295k
Overhead: 32789k
GGC runs: 95
Pre-IPA-Garbage: 39335k
Pre-IPA-Leak: 63718k
Pre-IPA-Overhead: 6988k
Post-IPA-Garbage: 39335k
Post-IPA-Leak: 63718k
Post-IPA-Overhead: 6988k
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 533597k -> 529441k
Peak memory use before GGC: 74132k
Peak memory use after GGC: 69415k
Maximum of released memory in single GGC run: 37541k
Garbage: 255773k
Leak: 9045k
Overhead: 38347k
GGC runs: 106
Pre-IPA-Garbage: 89677k
Pre-IPA-Leak: 80311k
Pre-IPA-Overhead: 11128k
Post-IPA-Garbage: 89677k
Post-IPA-Leak: 80311k
Post-IPA-Overhead: 11128k
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1234953k -> 1234997k
Peak memory use before GGC: 134702k
Peak memory use after GGC: 126430k
Maximum of released memory in single GGC run: 54316k
Garbage: 340166k
Leak: 10355k
Overhead: 43440k
GGC runs: 106
Pre-IPA-Garbage: 89677k
Pre-IPA-Leak: 80311k
Pre-IPA-Overhead: 11128k
Post-IPA-Garbage: 89677k
Post-IPA-Leak: 80311k
Post-IPA-Overhead: 11128k
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.
More information about the Gcc-regression
mailing list