A recent patch increased GCC's memory consumption!
gcctest@suse.de
gcctest@suse.de
Fri Nov 23 14:02: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: 6631k
Peak memory use before GGC: 1095k
Peak memory use after GGC: 993k
Maximum of released memory in single GGC run: 129k
Garbage: 237k
Leak: 951k
Overhead: 80k
GGC runs: 2
comparing empty function compilation at -O0 -g level:
Overall memory needed: 6647k
Peak memory use before GGC: 1122k
Peak memory use after GGC: 1020k
Maximum of released memory in single GGC run: 131k
Garbage: 239k
Leak: 983k
Overhead: 84k
GGC runs: 3
comparing empty function compilation at -O1 level:
Overall memory needed: 6691k
Peak memory use before GGC: 1095k
Peak memory use after GGC: 993k
Maximum of released memory in single GGC run: 131k
Garbage: 239k
Leak: 951k
Overhead: 80k
GGC runs: 2
comparing empty function compilation at -O2 level:
Overall memory needed: 6711k
Peak memory use before GGC: 1095k
Peak memory use after GGC: 994k
Maximum of released memory in single GGC run: 134k
Garbage: 242k
Leak: 952k
Overhead: 81k
GGC runs: 2
comparing empty function compilation at -O3 level:
Overall memory needed: 6711k
Peak memory use before GGC: 1095k
Peak memory use after GGC: 994k
Maximum of released memory in single GGC run: 134k
Garbage: 242k
Leak: 952k
Overhead: 81k
GGC runs: 2
comparing combine.c compilation at -O0 level:
Overall memory needed: 21179k -> 21175k
Peak memory use before GGC: 7806k
Peak memory use after GGC: 7185k
Maximum of released memory in single GGC run: 1550k
Garbage: 37870k
Leak: 5511k
Overhead: 4574k
GGC runs: 371
comparing combine.c compilation at -O0 -g level:
Overall memory needed: 23179k
Peak memory use before GGC: 9647k
Peak memory use after GGC: 8953k
Maximum of released memory in single GGC run: 1838k
Garbage: 38230k
Leak: 8316k
Overhead: 5202k
GGC runs: 342
comparing combine.c compilation at -O1 level:
Overall memory needed: 31695k -> 31699k
Peak memory use before GGC: 16352k
Peak memory use after GGC: 16184k
Maximum of released memory in single GGC run: 1360k
Garbage: 51362k -> 51370k
Leak: 5659k
Overhead: 5688k -> 5690k
GGC runs: 442
comparing combine.c compilation at -O2 level:
Amount of memory still referenced at the end of compilation increased from 5985k to 5997k, overall 0.19%
Overall memory needed: 33623k
Peak memory use before GGC: 16434k -> 16440k
Peak memory use after GGC: 16271k -> 16270k
Maximum of released memory in single GGC run: 1315k -> 1316k
Garbage: 70206k -> 70240k
Leak: 5985k -> 5997k
Overhead: 7941k -> 7944k
GGC runs: 510
comparing combine.c compilation at -O3 level:
Amount of produced GGC garbage increased from 91465k to 91576k, overall 0.12%
Overall memory needed: 38107k -> 38079k
Peak memory use before GGC: 16654k
Peak memory use after GGC: 16380k
Maximum of released memory in single GGC run: 2117k -> 2119k
Garbage: 91465k -> 91576k
Leak: 6106k -> 6105k
Overhead: 10469k -> 10489k
GGC runs: 545 -> 544
comparing insn-attrtab.c compilation at -O0 level:
Overall memory needed: 135919k
Peak memory use before GGC: 56998k
Peak memory use after GGC: 31455k
Maximum of released memory in single GGC run: 33256k
Garbage: 128179k
Leak: 8380k
Overhead: 13926k
GGC runs: 292
comparing insn-attrtab.c compilation at -O0 -g level:
Overall memory needed: 137175k
Peak memory use before GGC: 58140k
Peak memory use after GGC: 32597k
Maximum of released memory in single GGC run: 33256k
Garbage: 128409k
Leak: 10040k
Overhead: 14282k
GGC runs: 289
comparing insn-attrtab.c compilation at -O1 level:
Overall memory needed: 143187k -> 143191k
Peak memory use before GGC: 56210k
Peak memory use after GGC: 49982k
Maximum of released memory in single GGC run: 23976k
Garbage: 206548k
Leak: 9274k
Overhead: 23997k
GGC runs: 315
comparing insn-attrtab.c compilation at -O2 level:
Overall memory needed: 186559k
Peak memory use before GGC: 56849k
Peak memory use after GGC: 51569k
Maximum of released memory in single GGC run: 22720k
Garbage: 247841k -> 247842k
Leak: 10361k -> 10361k
Overhead: 29739k -> 29739k
GGC runs: 345
comparing insn-attrtab.c compilation at -O3 level:
Overall memory needed: 190979k -> 190983k
Peak memory use before GGC: 68525k
Peak memory use after GGC: 62278k
Maximum of released memory in single GGC run: 23239k
Garbage: 275915k -> 275916k
Leak: 10397k -> 10397k
Overhead: 31624k -> 31624k
GGC runs: 350
comparing Gerald's testcase PR8361 compilation at -O0 level:
Overall memory needed: 147459k -> 147487k
Peak memory use before GGC: 84523k
Peak memory use after GGC: 83686k
Maximum of released memory in single GGC run: 16844k
Garbage: 202344k
Leak: 48125k
Overhead: 23725k
GGC runs: 420
comparing Gerald's testcase PR8361 compilation at -O0 -g level:
Overall memory needed: 168259k -> 168263k
Peak memory use before GGC: 96488k
Peak memory use after GGC: 95531k
Maximum of released memory in single GGC run: 17652k
Garbage: 207868k
Leak: 69738k
Overhead: 28710k
GGC runs: 392
comparing Gerald's testcase PR8361 compilation at -O1 level:
Overall memory needed: 115258k -> 115266k
Peak memory use before GGC: 83997k
Peak memory use after GGC: 83161k
Maximum of released memory in single GGC run: 16342k
Garbage: 282637k -> 282661k
Leak: 47354k -> 47353k
Overhead: 27746k -> 27746k
GGC runs: 518
comparing Gerald's testcase PR8361 compilation at -O2 level:
Overall memory needed: 117562k -> 117510k
Peak memory use before GGC: 84113k
Peak memory use after GGC: 83276k
Maximum of released memory in single GGC run: 16340k
Garbage: 346702k -> 346892k
Leak: 48287k -> 48277k
Overhead: 34537k -> 34530k
GGC runs: 593 -> 594
comparing Gerald's testcase PR8361 compilation at -O3 level:
Overall memory needed: 122702k -> 122742k
Peak memory use before GGC: 85266k
Peak memory use after GGC: 84413k
Maximum of released memory in single GGC run: 16732k
Garbage: 378473k -> 378499k
Leak: 48738k -> 48720k
Overhead: 37222k -> 37216k
GGC runs: 626 -> 625
comparing PR rtl-optimization/28071 testcase compilation at -O0 level:
Overall memory needed: 378595k
Peak memory use before GGC: 101208k
Peak memory use after GGC: 56862k
Maximum of released memory in single GGC run: 50582k
Garbage: 178902k
Leak: 6097k
Overhead: 30781k
GGC runs: 106
comparing PR rtl-optimization/28071 testcase compilation at -O0 -g level:
Overall memory needed: 379391k
Peak memory use before GGC: 101839k
Peak memory use after GGC: 57492k
Maximum of released memory in single GGC run: 50583k
Garbage: 179007k
Leak: 7799k
Overhead: 31213k
GGC runs: 111
comparing PR rtl-optimization/28071 testcase compilation at -O1 level:
Overall memory needed: 436751k -> 436727k
Peak memory use before GGC: 78856k
Peak memory use after GGC: 69705k
Maximum of released memory in single GGC run: 37753k
Garbage: 234244k
Leak: 16006k
Overhead: 35358k
GGC runs: 105
comparing PR rtl-optimization/28071 testcase compilation at -O2 level:
Overall memory needed: 350751k -> 350835k
Peak memory use before GGC: 74692k
Peak memory use after GGC: 69706k
Maximum of released memory in single GGC run: 32246k
Garbage: 245723k
Leak: 16178k
Overhead: 38676k
GGC runs: 117
comparing PR rtl-optimization/28071 testcase compilation at -O3 -fno-tree-pre -fno-tree-fre level:
Overall memory needed: 1304847k -> 1303783k
Peak memory use before GGC: 130289k
Peak memory use after GGC: 120623k
Maximum of released memory in single GGC run: 61473k
Garbage: 359151k
Leak: 24557k
Overhead: 46972k
GGC runs: 105
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