Subject: *My* favorite benchmark
To: None <netbsd-users@netbsd.org>
From: Thor Lancelot Simon <tls@rek.tjls.com>
List: netbsd-advocacy
Date: 05/15/2007 21:58:17
We've seen a lot of semiscientific benchmark numbers thrown around
lately.  I happen to believe that the only benchmarks that matter are
properly written microbenchmarks whose correlation to architectural
features is well understood, and your own application.  And of course
benchmarks where you don't normalize everything you can about the system
under test are meaningless.

Microbenchmarks are boring.  My application is compiling operating systems,
because I do it many times a day for my job.

Here are results for compiling NetBSD 4 (checked out freshly from CVS as
of this afternoon) with GCC 4.1.2 as the host compiler for the NetBSD
toolchain, on two identical Mac Mini Core Duo machines with 512MB of RAM.

One machine is running NetBSD-current as of May 13; the other is running
FreeBSD 6.2RC2, because it's what I use as a host for building a
FreeBSD-based network device image at work.  Unfortunately that means I
will regretfully ignore any requests to run this test with other operating
systems or revisions; I don't have the hardware or time.

Both systems have the stock SMP kernels shipped with each OS's release
images.

Each machine has a single FFS filesystem, with soft dependencies, mounted
on /.  The NetBSD system has tmpfs mounted on /tmp; the FreeBSD system has
mfs.  Obviously, since both systems are stock Mac Minis from the dealer,
the disks are identical.

These are parallel builds (build.sh -j4) on a dual-core host.  I expected
FreeBSD 6 to win this test hands-down.  It *really* didn't -- since I do
both FreeBSD and NetBSD kernel development I would actually like very much
to know why.

=======================================================================
NetBSD 4.99.19 (GENERIC.MP) #0: Sun May 13 21:52:49 PDT 2007

builds@wb25:/home/builds/ab/HEAD/i386/200705130002Z-obj/home/builds/ab/HEAD/src/sys/arch/i386/compile/GENERIC.MP

NetBSD-current host, host compiler is GCC 4.1.2 integrated into NetBSD:
=======================================================================

===> Summary of results:
         build.sh command: ./build.sh -j4 -V USE_SSP=yes -m i386 -V HOST_CC=cc
-O2 -march=prescott -mtune=pentium-m -fomit-frame-pointer -V HOST_CFLAGS=-O2
-march=prescott -mtune=pentium-m -fomit-frame-pointer -V HOST_CXXFLAGS=-O2
-march=prescott -mtune=pentium-m -fomit-frame-pointer release
         build.sh started: Tue May 15 18:24:20 EDT 2007
         NetBSD version:   4.0_BETA2
         MACHINE:          i386
         MACHINE_ARCH:     i386
         Build platform:   NetBSD 4.99.19 i386
         HOST_SH:          /bin/sh
         No nonexistent/bin/nbmake, needs building.
         Bootstrapping nbmake
         TOOLDIR path:     /root/nb4src/src/tooldir.NetBSD-4.99.19-i386
         DESTDIR path:     /root/nb4src/src/destdir.i386
         RELEASEDIR path:  /root/nb4src/src/releasedir
         Created /root/nb4src/src/tooldir.NetBSD-4.99.19-i386/bin/nbmake
         makewrapper:
/root/nb4src/src/tooldir.NetBSD-4.99.19-i386/bin/nbmake-i386
         Updated /root/nb4src/src/tooldir.NetBSD-4.99.19-i386/bin/nbmake-i386
         Successful make release
         build.sh ended:   Tue May 15 20:01:29 EDT 2007
===> .

=======================================================================
FreeBSD 6.2-RC2 #0: Sun Dec 24 23:42:30 UTC 2006
    root@dessler.cse.buffalo.edu:/usr/obj/usr/src/sys/SMP

FreeBSD-6.2RC2 host, host compiler is GCC 4.1.2 from FreeBSD 'ports':
=======================================================================
===> Summary of results:
         build.sh command: ./build.sh -j4 -V USE_SSP=yes -m i386 -V
HOST_CC=gcc41 -O2 -march=prescott -mtune=pentium-m -fomit-frame-pointer -V
HOST_CFLAGS=-O2 -march=prescott -mtune=pentium-m -fomit-frame-pointer -V
HOST_CXXFLAGS=-O2 -march=prescott -mtune=pentium-m -fomit-frame-pointer
release
         build.sh started: Tue May 15 18:25:28 EDT 2007
         NetBSD version:   4.0_BETA2
         MACHINE:          i386
         MACHINE_ARCH:     i386
         Build platform:   FreeBSD 6.2-RC2 i386
         HOST_SH:          /bin/sh
         No nonexistent/bin/nbmake, needs building.
         Bootstrapping nbmake
         TOOLDIR path:     /root/nbsrc/src/tooldir.FreeBSD-6.2-RC2-i386
         DESTDIR path:     /root/nbsrc/src/destdir.i386
         RELEASEDIR path:  /root/nbsrc/src/releasedir
         Created /root/nbsrc/src/tooldir.FreeBSD-6.2-RC2-i386/bin/nbmake
         makewrapper:
/root/nbsrc/src/tooldir.FreeBSD-6.2-RC2-i386/bin/nbmake-i386
         Updated /root/nbsrc/src/tooldir.FreeBSD-6.2-RC2-i386/bin/nbmake-i386
         Successful make release
         build.sh ended:   Tue May 15 20:20:47 EDT 2007
===> .

-- 
  Thor Lancelot Simon	                                     tls@rek.tjls.com

  "The inconsistency is startling, though admittedly, if consistency is to
   be abandoned or transcended, there is no problem."	      - Noam Chomsky