Re: [Gc] Re: Performance of bdwgc7.2 had degraded compared to 6.8 - the patch to test
Ivan Maidanski
ivmai at mail.ru
Fri Dec 3 13:07:14 PST 2010
Hi Ludovic,
Please don't hurry to blame yourself ;)
Strange but the bigloo tests show the degradation problem has nothing with the patches below.
Thu, 02 Dec 2010 21:53:09 +0100 ludo at gnu.org (Ludovic CourtХs):
> Hi Ivan,
>
> Ivan Maidanski <ivmai at mail.ru> writes:
>
> > It seems the observed degradation can be discovered by 2 tests:
> > 1) by benchmarking v71 vs v72a2+test2_patch;
> > 2) by benchmarking v71 vs v72a2+test3_patch.
> >
> > test2 patch reverts the relevant changes of:
> > 2008-08-21 Hans Boehm <Hans.Boehm at hp.com>
> >
> > test3 patch reverts the relevant changes of:
> > 2009-05-22 Hans Boehm <Hans.Boehm at hp.com> (Largely from Ludovic
> Cortes)
>
> Damn, I feel guilty now. ;-)
>
> Did you measure the effect of each patch individually? It would be
> interesting to know.
>
> For the record, the discussion that led to the second patch started here:
>
> http://thread.gmane.org/gmane.comp.programming.garbage-collection.boehmgc/2570
>
> The next-to-final patch was posted here:
>
> http://thread.gmane.org/gmane.comp.programming.garbage-collection.boehmgc/2634
>
> The intent was to /exclude/ ELF sections containing relocated read-only
> data from the GC roots on GNU systems, thereby reducing the amount of
> memory that needs to be scanned.
>
> The effect on libguile was discussed here:
>
> http://thread.gmane.org/gmane.lisp.guile.devel/9247
>
> In this message, I wrote:
>
> However, when not linking with `-z relro', static allocation leads to
> slightly degraded performance and increased heap usage (perhaps due to
> misidentified pointers in the `.data.rel.ro' section?). This is
> probably worth some investigation on the BDW-GC side.
>
> So, ahem, I feel twice as guilty now...
>
> Could the problem be caused by the search for LOAD segments when a
> PT_GNU_RELRO is encountered, in GC_register_dynlib_callback? The code
> does:
>
> --8<---------------cut here---------------start------------->8---
> for( i = 0; i < (int)(info->dlpi_phnum); ((i++),(p++)) ) {
> switch( p->p_type ) {
> case PT_GNU_RELRO:
> /* This entry is known to be constant and will eventually be remapped
> read-only. However, the address range covered by this entry is
> typically a subset of a previously encountered `LOAD' segment, so
> we need to exclude it. */
> {
> for (j = n_load_segs; --j >= 0; ) {
> --8<---------------cut here---------------end--------------->8---
>
> It does look quadratic to me.
>
> However, it would only impact initialization time, which is probably
> negligible on long-running programs (such as the Bigloo benchmarks, I
> suppose).
>
> Hmm, OTOH, GC_is_visible calls GC_register_dynamic_libraries, which runs
> the above code, so this could be a problem.
>
> What do you think?
>
> Thanks,
> Ludo'.
>
> _______________________________________________
> Gc mailing list
> Gc at linux.hpl.hp.com
> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
More information about the Gc
mailing list