This is the mail archive of the gcc-regression@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: A recent patch increased GCC's memory consumption!


Joseph,
any idea why the patch increased memory by up to 18%?

Honza
> 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 combine.c compilation at -O0 level:
>     Overall memory needed: 24733k -> 24745k
>     Peak memory use before GGC: 9591k -> 9582k
>     Peak memory use after GGC: 8938k -> 8930k
>     Maximum of released memory in single GGC run: 2754k
>     Garbage: 41378k -> 41308k
>     Leak: 6709k -> 6696k
>     Overhead: 5842k -> 5810k
>     GGC runs: 320 -> 321
> 
> comparing combine.c compilation at -O1 level:
>   Overall memory allocated via mmap and sbrk increased from 23916k to 26808k, overall 12.09%
>   Amount of memory still referenced at the end of compilation increased from 7170k to 7186k, overall 0.22%
>     Overall memory needed: 23916k -> 26808k
>     Peak memory use before GGC: 17374k -> 17359k
>     Peak memory use after GGC: 17181k -> 17170k
>     Maximum of released memory in single GGC run: 2421k
>     Garbage: 66461k -> 66319k
>     Leak: 7170k -> 7186k
>     Overhead: 7502k -> 7709k
>     GGC runs: 412 -> 415
> 
> comparing combine.c compilation at -O2 level:
>   Overall memory allocated via mmap and sbrk increased from 23932k to 26808k, overall 12.02%
>   Amount of memory still referenced at the end of compilation increased from 7410k to 7426k, overall 0.21%
>     Overall memory needed: 23932k -> 26808k
>     Peak memory use before GGC: 17380k -> 17360k
>     Peak memory use after GGC: 17181k -> 17170k
>     Maximum of released memory in single GGC run: 2504k -> 2503k
>     Garbage: 84832k -> 84713k
>     Leak: 7410k -> 7426k
>     Overhead: 10034k -> 10258k
>     GGC runs: 486 -> 483
> 
> comparing combine.c compilation at -O3 level:
>   Overall memory allocated via mmap and sbrk increased from 24416k to 29020k, overall 18.86%
>   Peak amount of GGC memory allocated before garbage collecting increased from 17657k to 20366k, overall 15.34%
>   Amount of produced GGC garbage increased from 115840k to 133347k, overall 15.11%
>   Amount of memory still referenced at the end of compilation increased from 7483k to 8017k, overall 7.14%
>     Overall memory needed: 24416k -> 29020k
>     Peak memory use before GGC: 17657k -> 20366k
>     Peak memory use after GGC: 17261k -> 17170k
>     Maximum of released memory in single GGC run: 3340k -> 5821k
>     Garbage: 115840k -> 133347k
>     Leak: 7483k -> 8017k
>     Overhead: 13199k -> 15967k
>     GGC runs: 537 -> 538
> 
> comparing insn-attrtab.c compilation at -O0 level:
>   Amount of produced GGC garbage increased from 149716k to 149911k, overall 0.13%
>     Overall memory needed: 81648k -> 81640k
>     Peak memory use before GGC: 70268k -> 70259k
>     Peak memory use after GGC: 45007k -> 44999k
>     Maximum of released memory in single GGC run: 37046k
>     Garbage: 149716k -> 149911k
>     Leak: 11585k -> 11332k
>     Overhead: 19128k -> 19105k
>     GGC runs: 252 -> 254
> 
> comparing insn-attrtab.c compilation at -O1 level:
>     Overall memory needed: 115692k -> 114504k
>     Peak memory use before GGC: 98465k -> 96264k
>     Peak memory use after GGC: 87786k -> 85585k
>     Maximum of released memory in single GGC run: 32776k -> 32777k
>     Garbage: 295571k -> 295366k
>     Leak: 11547k -> 11556k
>     Overhead: 35277k -> 35957k
>     GGC runs: 284 -> 251
> 
> comparing insn-attrtab.c compilation at -O2 level:
>     Overall memory needed: 124848k -> 125220k
>     Peak memory use before GGC: 117531k -> 115314k
>     Peak memory use after GGC: 87770k -> 85553k
>     Maximum of released memory in single GGC run: 32461k
>     Garbage: 382129k -> 381539k
>     Leak: 11662k -> 11670k
>     Overhead: 47146k -> 47771k
>     GGC runs: 320 -> 279
> 
> comparing insn-attrtab.c compilation at -O3 level:
>   Amount of memory still referenced at the end of compilation increased from 11678k to 11693k, overall 0.13%
>     Overall memory needed: 124852k -> 125236k
>     Peak memory use before GGC: 117532k -> 115335k
>     Peak memory use after GGC: 87771k -> 85574k
>     Maximum of released memory in single GGC run: 32461k -> 32788k
>     Garbage: 382660k -> 382215k
>     Leak: 11678k -> 11693k
>     Overhead: 47295k -> 47932k
>     GGC runs: 324 -> 282
> 
> comparing Gerald's testcase PR8361 compilation at -O0 level:
>     Overall memory needed: 119108k -> 118632k
>     Peak memory use before GGC: 95788k -> 95340k
>     Peak memory use after GGC: 94840k -> 94393k
>     Maximum of released memory in single GGC run: 20762k -> 20159k
>     Garbage: 224401k -> 224311k
>     Leak: 49424k -> 49424k
>     Overhead: 36944k -> 36947k
>     GGC runs: 339 -> 340
> 
> comparing Gerald's testcase PR8361 compilation at -O1 level:
>   Amount of memory still referenced at the end of compilation increased from 55415k to 55690k, overall 0.50%
>     Overall memory needed: 105004k -> 106072k
>     Peak memory use before GGC: 94848k -> 94843k
>     Peak memory use after GGC: 93906k -> 93892k
>     Maximum of released memory in single GGC run: 19825k -> 19796k
>     Garbage: 597552k -> 597088k
>     Leak: 55415k -> 55690k
>     Overhead: 64302k -> 69288k
>     GGC runs: 520
> 
> comparing Gerald's testcase PR8361 compilation at -O2 level:
>   Amount of memory still referenced at the end of compilation increased from 56310k to 56627k, overall 0.56%
>     Overall memory needed: 105140k -> 106064k
>     Peak memory use before GGC: 94848k -> 94843k
>     Peak memory use after GGC: 93906k -> 93893k
>     Maximum of released memory in single GGC run: 19825k -> 19796k
>     Garbage: 679610k -> 679803k
>     Leak: 56310k -> 56627k
>     Overhead: 75396k -> 80498k
>     GGC runs: 592 -> 584
> 
> comparing Gerald's testcase PR8361 compilation at -O3 level:
>   Amount of produced GGC garbage increased from 722393k to 726345k, overall 0.55%
>     Overall memory needed: 106840k -> 108464k
>     Peak memory use before GGC: 95930k -> 95603k
>     Peak memory use after GGC: 94979k -> 94656k
>     Maximum of released memory in single GGC run: 19927k -> 19694k
>     Garbage: 722393k -> 726345k
>     Leak: 56821k -> 56846k
>     Overhead: 78531k -> 84354k
>     GGC runs: 603 -> 592
> 
> Head of the ChangeLog is:
> 
> --- /usr/src/SpecTests/sandbox-britten-memory/x86_64/mem-result/ChangeLog	2005-07-16 15:24:34.000000000 +0000
> +++ /usr/src/SpecTests/sandbox-britten-memory/gcc/gcc/ChangeLog	2005-07-16 19:56:33.000000000 +0000
> @@ -1,3 +1,15 @@
> +2005-07-16  Eric Botcazou <ebotcazou@libertysurf.fr>
> +
> +	* doc/install.texi (*-*-solaris2*): Document recommended version
> +	of GNU binutils and mention GNU linker problem on Solaris 10.
> +
> +2005-07-16  Joseph S. Myers  <joseph@codesourcery.com>
> +
> +	PR c/22421
> +	* c-decl.c (c_build_bitfield_integer_type): New function.
> +	(finish_struct): Call it.
> +	* c-pretty-print.c (pp_c_type_specifier): Handle bit-field types.
> +
>  2005-07-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
>  
>  	* c-typeck.c (digest_init): Call 'convert_for_assignment'
> 
> 
> 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]