RELENG_4 -> 5 -> 6: significant performance regression

Dmitry Pryanishnikov dmitry at atlantis.dp.ua
Fri Apr 28 12:31:27 UTC 2006


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?

>> options 	INVARIANTS
>> options 	INVARIANT_SUPPORT
>
> These definitely effect performance, much more in 5.x and 6.x (at the
> 10-20% level) than 4.x.

  It's a pity - those help to catch a lot of software bugs ;(

>> options 	QUOTA
>
> This definitely effects performance on 6.x since it makes your
> filesystem giant-locked, which may also interfere with your network
> processing.

  It's also a pity.

>>                  %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
>
> Please retry without.  Also make sure there are no other diagnostic
> messages at boot time about e.g. mpsafenet being forced to 0.

I've removed all mentioned options and redone benchmarks. There are no
diagnostics about mpsafe* (last one I've seen due to IPSEC, and I've
replaced it with FAST_IPSEC+crypto before doing previous benchmarks).
New results are pretty close for RELENG_5 and RELENG_6:

                   %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% ;(

> Kris

Sincerely, Dmitry
-- 
Atlantis ISP, System Administrator
e-mail:  dmitry at atlantis.dp.ua
nic-hdl: LYNX-RIPE


More information about the freebsd-stable mailing list