bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: strcache scaling issue


From: Kirill Smelkov
Subject: Re: strcache scaling issue
Date: Sun, 20 Mar 2011 10:31:00 +0300
User-agent: Mutt/1.5.20 (2009-06-14)

On Sat, Mar 19, 2011 at 06:13:28PM -0400, Paul Smith wrote:
> On Sat, 2011-03-19 at 20:47 +0300, Kirill Smelkov wrote:
> 
> >                         1000    2000    4000    5000    6000    7000
> > 
> > 3.82.90 (with patch,    2.2s    4.8s    14.0s   23.5s   31.6s   44.4s
> >      -O3, no asserts)
> > 3.81 -O3                2.5s    5.2s    11.5s   14.1s   18.3s   23.8s
> 
> I suspect it's to do with all the extra stuff added into the strcache;
> as I mentioned before, it turns out that every temporary filename we
> construct for pattern rule searches goes into the strcache even if they
> don't match anything: that's a lot of extra memory.

Yes, I've seen in top for e.g. 7000 case that 3.81 max VIRT was ~ 22MB and
3.82.90 was ~ 73MB.


> I wonder, if you run make (both old and new) with the "-r" flag, if
> you'll see similar divergence in performance.

No, for "-r" the situation is exactly the opposite - 3.82.90 wins here:


                1000    2000    4000    5000    6000    7000    8000

3.82.90 -r      0.07s   0.18s   0.63s   1.00s   1.38s   1.82s   2.38s
3.81 -r         0.06s   0.15s   0.58s   1.01s   2.12s   2.33s   4.21s


Also, I've made an observation: when run without "-r", both makes print

    <N>
    make: Nothing to be done for `all'.

and 3.81 finishes right after that print, but 3.82.90 does something
after it for significant amount of time and only after it finishes.

I've tried to measure (without clock, just counting in my head) what
that additional delay is and it looks like this:

                        1000    2000    4000    5000    6000    7000

3.81 -O3                2.5s    5.2s    11.5s   14.1s   18.3s   23.8s
3.82.90 (with patch,    2.2s    4.8s    14.0s   23.5s   31.6s   44.4s
     -O3, no asserts)
3.82.90 (delay after
"Nothing to be done for `all')          ~4s     ~9s     ~13s    ~17s


So the simple math suggests that in no "-r" case, 3.82.90 looses becase
of that extra after-processing.  Is it maybe that we are just freeing
something for so long?


Another note: after final printout, 3.82.90 VIRT stays stable for all
that extra time until make finished.


Thanks,
Kirill



reply via email to

[Prev in Thread] Current Thread [Next in Thread]