INVARIANTS (was Re: RELENG_4 -> 5 -> 6: significant performance regression)

Matthew D. Fuller fullermd at
Sat May 13 08:52:36 PDT 2006

On Sat, May 13, 2006 at 10:37:40AM -0400 I heard the voice of
Kris Kennaway, and lo! it spake thus:
> With respect to INVARIANTS, you just need to get used to the fact
> that running thousands of checks for bugs is incompatible with
> running at optimal speed.

(I'm not sure what the point of saying this is, really, but I'll say
it anyway.)

I've run all my systems with INVARIANTS for at least as long as I've
known it was there.  While more performance is always good, hardly any
of my systems are so constrained as to need every bit of suds all the
time; trading off a bit of performance for a better chance of catching
a problem before it really screws something up is just a no-brainer.

Additionally (and especially on -CURRENT), I run it because I think
more people run it than don't, and while theoretically it should just
add checks, I know there are places where it changes code paths much
more than that.  So, the !(INVARIANTS) code paths don't get exercised
as much, and I worry about bugs hiding there that don't get found (I
think I recall a case or three over the years of just that happening).
Like everyone, I'm sure, I'm all for ferreting out bugs and getting
them fixed, but I'd rather not have to bust my virtual face on the
virtual concrete to do it    ;)

It's totally worth wasting 2% of the system on adding that security.
Heck, maybe even 5%.  But 10%?  25%?  I wonder.  It's been a long time
since I had a system fall over from a KASSERT, but due to the code
path issues, I'm not sure that really means I'm "safe" without it.

Yeah, I was right, there wasn't really much point in there.  But I
typed it, so y'all have to read it now    :p

Matthew Fuller     (MF4839)   |  fullermd at
Systems/Network Administrator |
           On the Internet, nobody can hear you scream.

More information about the freebsd-stable mailing list