RELENG_4 -> 5 -> 6: significant performance regression

Kris Kennaway kris at obsecurity.org
Fri Apr 28 18:28:22 UTC 2006


On Fri, Apr 28, 2006 at 03:31:17PM +0300, Dmitry Pryanishnikov wrote:
> 
> Hello!
> 
> On Thu, 27 Apr 2006, Kris Kennaway wrote:
> 
>  Thanks for your suggestions, they've made a difference (though not as big
> as one could hope).
> 
> >On Thu, Apr 27, 2006 at 05:08:11PM +0300, Dmitry Pryanishnikov wrote:
> >
> >>makeoptions	CONF_CFLAGS=-fno-builtin
> >
> >Non-default option; this may conceivably affect performance.
> 
>  The reason why I've initially included this option is the following
> comment (NOTES from RELENG_6):
> 
> #
> # CONF_CFLAGS gives some extra compiler flags that are added to ${CFLAGS}
> # after most other flags.  Here we use it to inhibit use of non-optimal
> # gcc builtin functions (e.g., memcmp).
> #
> 
> I've read this: using "CONF_CFLAGS=-fno-builtin" inhibits use of non-optimal
> gcc builtin functions, so this option may be useful for getting max. 
> performance. Are this comment and my interpretation still correct now?

I don't know, it needs to be tested in your particular case.

> >>                 %Sys   %Intr   %Idl
> >>RELENG_4 + rl0      14      14     72
> >>RELENG_4 + fxp0     14      10     76
> >>RELENG_5 + rl0      40      30     30
> >>RELENG_5 + fxp0     35      25     40
> >>RELENG_6 + rl0      45      40     15
> >>RELENG_6 + fxp0     45      35     20

>                   %Sys   %Intr   %Idl  "time md5 -t" wall clock time
> RELENG_5 + rl0      33      23     44   1:41
> RELENG_5 + fxp0     30      20     50   1:36
> 
> RELENG_6 + rl0      34      24     42   1:43
> RELENG_6 + fxp0     30      20     50   1:40
> 
> So performance now is much better then before removal of
> 
> makeoptions	CONF_CFLAGS=-fno-builtin
> options 	INVARIANTS
> options 	INVARIANT_SUPPORT
> options 	QUOTA
> 
> (I'll try to find out which one of these takes which % of overhead when I
> get free time), but still much worse then under RELENG_4, where this
> particular (I'd say "quote common") usage pattern takes 24-28% of CPU time, 
> while under RELENG_5 / 6 it takes >= 50% ;(

Thanks.  Silly question: the data transfer rate is the same on both
4.x and 6.x, right?  i.e. the data transfer itself takes the same
time?

The next step is for you to run some profiling tests to see
where the kernel is spending time, e.g. with hwpmc.

Also, when you are trying to quantify performance differences, you
need to run many copies of the test (at least 10) under identical
conditions to account for possible variations.  The ministat tool
(/usr/src/tools/tools/ministat) is good for performing statistically
meaningful comparisons of data sets when you have them.

Kris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-stable/attachments/20060428/4551607a/attachment.pgp


More information about the freebsd-stable mailing list