FreeBSD 4.8 SMP performance

Paul Koch paul.koch at statscout.com
Sun Jun 22 23:13:29 PDT 2003


Last week we did a fairly major installation of our network 
monitoring software at a customers' site on a couple of 
identical quad processor machines running FreeBSD-4.8.
One as a production machine, the other as a warm spare.

The machines were unfortunately "hand me downs" from the 
weenies server group:
 - Compaq server of some description
 - quad 700Mhz Intel Xeon 2M cache CPUs
 - 4 gigabytes of ram
 - usual arrangement of Compaq/Adaptec SCSI and raid 
    controllers
 - 1 * raid 1 disk setup
 - 1 * raid 5 disk setup
 - single and dual port Intel NICs

We originally intended to benchmark a 4.8 and 5.1 box side
by side to see what the SMP performance gains were, but ran
out of time due to SMP kernel and dual port Intel NIC problem.
When running 5.1 with SMP, the dual port NICs would lock up
with "fxp0 device timeout" messages. Thinking this was a 5.x 
related problem, we fell back to 4.8 SMP, eventually finding 
that the same problem also existed in it.  A quick change of NIC
fixed our immediate issue.  Time ran short so we unfortunately
never got back to 5.1 SMP or to investigate the dual port NIC
problems.

Having never run a SMP box before, we were surprised when 
running 'top' on the 5.1 machine to see a process state of "Giant".
Thought this was suppose to be fine grain SMP :)

Our product is a real-time network performance monitoring 
application, only available on FreeBSD of course. Statscout 
NPM is typically deployed as a "blanket monitoring" solution. 
That is, monitor every port on every switch/router/repeater each
minute (ie. ping/snmp) for things like bytes, frames, errors, 
discards and status.

This particular customer has are rather large Cisco network, 
consisting of over 5000 switches/routers and ~100,000 network
interfaces. Our software was configured to poll some devices at
60 second intervals and others at 120 seconds, collecting 10 
SNMP OIDs per interface per poll. That's approximately one 
million SNMP OIDs to collect.

The customer provided a list of device names/IP addresses and
then it took just under one hour to SNMP walk all 5000 devices
and populate our configuration. Once running and with a bit of 
tuning to our software, the machine was cruising along collecting, 
processing and saving over 500,000 SNMP OIDs per minute 
(8333/sec), within ~20,000 SNMP requests, and ~4000 pings 
per minute, using less than 50% of available CPU. We were very
impressed with how smoothly and responsive the SMP machine
ran doing lots of simultaneous disk/network activity, while also
servicing user requested real-time reports.

It was a pity that the network wasn't big enough to push the 
machine to its limits !


We noticed several things on 4.8:

 - Some of our busy processes jumped around 'a lot' between
   the different processors. It would be nice if processor affinity 
   was implemented to get the best out of those 2M CPU caches.

 - "systat -vm" would chew up ~10 percent on one CPU when
   running a SMP kernel. Don't know what was going on there.

 - The dual port Intel fxp lockup mentioned above.

	Paul.
-- 
Paul Koch (CTO Statscout Pty Ltd)
http://www.statscout.com
Brisbane, Australia


More information about the freebsd-smp mailing list