A recent patch increased GCC's memory consumption!
gcctest@suse.de
gcctest@suse.de
Thu May 24 07:44:00 GMT 2007
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: 7493k
Peak memory use before GGC: 2340k
Peak memory use after GGC: 2012k
Maximum of released memory in single GGC run: 328k
Garbage: 481k
Leak: 2390k
Overhead: 519k
GGC runs: 3
comparing empty function compilation at -O0 -g level:
Overall memory needed: 7509k
Peak memory use before GGC: 2367k
Peak memory use after GGC: 2040k
Maximum of released memory in single GGC run: 327k
Garbage: 483k
Leak: 2423k
Overhead: 523k
GGC runs: 3
comparing empty function compilation at -O1 level:
Overall memory needed: 7545k
Peak memory use before GGC: 2340k
Peak memory use after GGC: 2012k
Maximum of released memory in single GGC run: 328k
Garbage: 486k
Leak: 2393k
Overhead: 519k
GGC runs: 3
comparing empty function compilation at -O2 level:
Overall memory needed: 7561k
Peak memory use before GGC: 2340k
Peak memory use after GGC: 2012k
Maximum of released memory in single GGC run: 328k
Garbage: 490k
Leak: 2393k
Overhead: 520k
GGC runs: 4
comparing empty function compilation at -O3 level:
Overall memory needed: 7561k
Peak memory use before GGC: 2340k
Peak memory use after GGC: 2012k
Maximum of released memory in single GGC run: 328k
Garbage: 490k
Leak: 2393k
Overhead: 520k
GGC runs: 4
comparing combine.c compilation at -O0 level:
Overall memory needed: 22461k
Peak memory use before GGC: 9035k
Peak memory use after GGC: 8246k
Maximum of released memory in single GGC run: 1595k
Garbage: 38371k
Leak: 7016k
Overhead: 4988k
GGC runs: 280
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 24389k -> 24393k
Peak memory use before GGC: 10770k
Peak memory use after GGC: 10005k
Maximum of released memory in single GGC run: 1891k
Garbage: 38740k
Leak: 9909k
Overhead: 5694k
GGC runs: 271
comparing combine.c compilation at -O1 level:
Overall memory needed: 35353k -> 35349k
Peak memory use before GGC: 17850k
Peak memory use after GGC: 17670k
Maximum of released memory in single GGC run: 1346k
Garbage: 54066k -> 54065k
Leak: 7068k
Overhead: 6254k -> 6253k
GGC runs: 363
comparing combine.c compilation at -O2 level:
Overall memory needed: 37225k -> 37221k
Peak memory use before GGC: 17896k -> 17897k
Peak memory use after GGC: 17684k
Maximum of released memory in single GGC run: 1363k -> 1365k
Garbage: 71142k -> 71145k
Leak: 7192k -> 7196k
Overhead: 8413k -> 8413k
GGC runs: 422
comparing combine.c compilation at -O3 level:
Amount of memory still referenced at the end of compilation increased from 7290k to 7302k, overall 0.16%
Overall memory needed: 43653k
Peak memory use before GGC: 18125k
Peak memory use after GGC: 17888k
Maximum of released memory in single GGC run: 3637k
Garbage: 97091k -> 97102k
Leak: 7290k -> 7302k
Overhead: 11743k -> 11746k
GGC runs: 456
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 142057k -> 142061k
Peak memory use before GGC: 59801k
Peak memory use after GGC: 32807k
Maximum of released memory in single GGC run: 34625k
Garbage: 131850k
Leak: 9852k
Overhead: 14381k
GGC runs: 220
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 143301k -> 143297k
Peak memory use before GGC: 60963k
Peak memory use after GGC: 33968k
Maximum of released memory in single GGC run: 34626k
Garbage: 132068k
Leak: 11561k
Overhead: 14778k
GGC runs: 218
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 153065k -> 153057k
Peak memory use before GGC: 62286k
Peak memory use after GGC: 59785k
Maximum of released memory in single GGC run: 23609k -> 23630k
Garbage: 232076k -> 232080k
Leak: 9740k
Overhead: 26102k -> 26103k
GGC runs: 250
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 166917k -> 166989k
Peak memory use before GGC: 62710k
Peak memory use after GGC: 60106k
Maximum of released memory in single GGC run: 21321k
Garbage: 265881k -> 265878k
Leak: 9731k
Overhead: 31484k -> 31484k
GGC runs: 273
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 179913k -> 179977k
Peak memory use before GGC: 75342k
Peak memory use after GGC: 70912k
Maximum of released memory in single GGC run: 22939k
Garbage: 295050k -> 295048k
Leak: 9735k
Overhead: 33204k -> 33204k
GGC runs: 275
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 153851k
Peak memory use before GGC: 89198k
Peak memory use after GGC: 88315k
Maximum of released memory in single GGC run: 18130k
Garbage: 208681k
Leak: 51201k
Overhead: 24222k
GGC runs: 410
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 173855k
Peak memory use before GGC: 101755k
Peak memory use after GGC: 100747k
Maximum of released memory in single GGC run: 18434k
Garbage: 214360k
Leak: 74516k
Overhead: 30118k
GGC runs: 382
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 150500k -> 150492k
Peak memory use before GGC: 100961k -> 100963k
Peak memory use after GGC: 99962k
Maximum of released memory in single GGC run: 17471k
Garbage: 346908k -> 346929k
Leak: 51790k -> 51782k
Overhead: 31501k -> 31500k
GGC runs: 534
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 158132k -> 158128k
Peak memory use before GGC: 101411k
Peak memory use after GGC: 100401k
Maximum of released memory in single GGC run: 17468k
Garbage: 394711k -> 394687k
Leak: 52907k -> 52907k
Overhead: 37071k -> 37068k
GGC runs: 581
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 160460k -> 160456k
Peak memory use before GGC: 103024k
Peak memory use after GGC: 101989k
Maximum of released memory in single GGC run: 17871k
Garbage: 429249k -> 429229k
Leak: 53215k -> 53216k
Overhead: 39706k -> 39704k
GGC runs: 604
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 344493k
Peak memory use before GGC: 80326k
Peak memory use after GGC: 58064k
Maximum of released memory in single GGC run: 43620k
Garbage: 144989k
Leak: 7547k
Overhead: 24699k
GGC runs: 74
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 345297k
Peak memory use before GGC: 80972k
Peak memory use after GGC: 58711k
Maximum of released memory in single GGC run: 43609k
Garbage: 145094k
Leak: 9315k
Overhead: 25195k
GGC runs: 82
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 306441k -> 306253k
Peak memory use before GGC: 83376k
Peak memory use after GGC: 74913k
Maximum of released memory in single GGC run: 39402k
Garbage: 232499k
Leak: 20982k
Overhead: 31835k
GGC runs: 81
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 317497k -> 316997k
Peak memory use before GGC: 79899k
Peak memory use after GGC: 74913k
Maximum of released memory in single GGC run: 33013k
Garbage: 240414k -> 240419k
Leak: 21072k -> 21061k
Overhead: 34078k -> 34077k
GGC runs: 92
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1037209k -> 1037957k
Peak memory use before GGC: 190671k
Peak memory use after GGC: 178187k
Maximum of released memory in single GGC run: 80830k
Garbage: 369148k -> 369146k
Leak: 46439k -> 46440k
Overhead: 46369k -> 46369k
GGC runs: 74
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