Linux Benchmark Notes

CPU Benchmarks

Other (non-linux) systems are added for interest.

Linux/Unix nbench

    http://www.tux.org/~mayer/linux/bmark.html

These benchmarks are single-thread/single-processor benchmarks.  Multi-thread/multi-processor performance is NOT measured.

Baseline (LINUX)    : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38.  The table is roughly ordered by comparison of measurements with more weight for INT and FP.
 
CPU/Machine5.720
L2 Cache
OS
Compiler
C-lib
MEM
INT
FP
AMD Opteron244 1.8GHz/333
PC3200
Tyan Tiger K8W (S2875) 2 CPUs
1M
Linux 2.4.23-s1
Slackware 9.1
gcc version 3.2.3
libc:ld-2.3.2.so
12.251
8.857
17.863
PowerPC 970 (2.2) 2GHz/1GHz
PC3200
Apple Power Mac G5 Dual
512K
Mac OS X 10.3.5 (Darwin 7.5.0)
gcc version 3.3 20030304 (Apple Computer, Inc. build 1495)
unknown version
11.415
8.342
17.305
AMD Athlon XP 1800+ 1.533GHz/333 PC2700
Asus A7S333
256K
Linux 2.4.20r7
Slackware 9.0b
gcc version 3.2.2
libc:ld-2.3.1.so
9.570
7.863
14.879
AMD K7 1.33GHz/266
PC2100
256K Mandrake 8.1 gcc version 2.96 20000731 (Mandrake Linux 8.1 2.96-0.62mdk) unknown version 7.800 6.540 12.673
AMD Athlon Thunderbird 1.33GHz/266
PC2100 
Asus A7M266
256K Linux 2.4.4p7
Mandrake 7.1
gcc version 2.95.3 19991030 (prerelease) glibc:libc-2.1.3 7.290 6.601 15.193
PowerPC G4 (3.3) 1GHz/167
PC2700
Apple PowerBook G4 17"
256K
Mac OS X 10.3.5 (Darwin 7.5.0)
gcc version 3.3 20030304 (Apple Computer, Inc. build 1495)
unknown version
7.073
6.383
7.815
AMD Athlon Thunderbird 1.33GHz/266
PC2100 
Asus A7M266
256K Linux 2.2.19
Mandrake 7.1
gcc version 2.95.3 19991030 (prerelease) glibc:libc-2.1.3 6.713 6.050 13.918
AMD K7 1.155GHz
133MHz SDRAM
256K Mandrake 7.1 gcc version 2.95.3 19991030 (prerelease) unknown version (static) 6.338 5.720 13.133
AMD Athlon Thunderbird 1.13GHz/266
PC2100 
Asus A7M266
256K Linux 2.4.2
RedHat 7.1
egcs-2.91.66 19990314/
(egcs-1.1.2 release)
unknown version (static) 5.965 4.938 8.272
AMD Athlon Thunderbird 1GHz/266
PC2100 
Asus A7M266
256K Linux 2.4.17
RedHat 7.2
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98) unknown version (static) 5.334 5.071 9.626
PowerPC G4 667MHz/133
PC133
Apple PowerBook G4 15"
256K L2
1M L3
Mac OS X 10.3.5 (Darwin 7.5.0)
gcc version 3.3 20030304 (Apple Computer, Inc. build 1495)
unknown version
4.669
4.228
5.483
AMD Athlon 800MHz/200 100MHz SDRAM
Asus K7V
512K Linux 2.4.17
RedHat 7.2
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98) unknown version (static) 4.240 4.044 7.867
Intel Pentium III 800MHz/133
PC600 RDRAM 512MB
Dell OptiPlex GX300
256K
Linux 2.4.7
RedHat
7.2
gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)
unknown version (static)
3.674
3.118
7.184
Intel Pentium III 800MHz
133MHz SDRAM
Asus CUSL2
256K Linux 2.4.2
RedHat 7.1b
egcs-2.91.66 19990314/
(egcs-1.1.2 release)
unknown version (static) 3.495 2.744 6.235
Intel Pentium III 667MHz
133MHz SDRAM 256MB
Dell OptiPlex GX110
256K
Linux 2.4.18 Slackware 8.1-b2
gcc version 2.95.3 20010315 (release)
unknown version
2.995
2.788
5.557
Sun UltraSPARC II/V9/FP 750MHz 8GB
Fire V880, 4 CPUs
64K D
32K I
8M L2
Solaris 8
cc -xO3 -s Sun WokShop 6 update 1 C 5.2 2000/09/11
unknown version
2.737
2.430
4.684
Intel Pentium III 600MHz
133MHz SDRAM 128MB
256K
Linux 2.54.7-10 RedHat 7.1
gcc version 2.96 20010731
(release)
unknown version
2.681
2.311
4.836
Intel Pentium III 600MHz
133MHz SDRAM
Intel CC820
512K Linux 2.4.2
RedHat 7.0+
egcs-2.91.66 19990314/
(egcs-1.1.2 release)
unknown version (static) 2.577 2.100 4.178
Intel Pentium III 600MHz
RDRAM
Intel VC820
512K Linux 2.4.2
RedHat 7.1b
egcs-2.91.66 19990314/
(egcs-1.1.2 release)
unknown version (static) 2.531 2.078 4.180
Sun UltraSPARC II/V9/FP 750MHz 8GB
Fire V880, 4 CPUs
64K D
32K I
8M L2
Solaris 8
gcc version 2.95.2 19991024
(release)
unknown version
1.749
1.948
3.710
Intel Pentium III 500MHz
100MHz SDRAM
Intel SE440BX-2
512K Linux 2.2.14
RedHat 6.2+
egcs-2.91.66 19990314/
(egcs-1.1.2 release)
unknown version (static) 2.162 1.755 3.540
IBM S/390 zSeries z800 2066
636 BogoMIPS
1.8GB

Linux 2.4.9-37
RedHat 7.2
gcc version 2.95.3 20010315 (release)
unkown version
1.226
1.642
1.682
Sun UltraSPARC II/V9/FP
400MHz 8GB
Ultra-Enterprise 450, 8 CPUs
16K D
16K I
8M L2
Solaris 8
gcc version 2.95.2
19991024 (release)
unknown version
1.033
1.332
2.279
Intel Mobile Pentium III 266MHz
Aaeon PCM-5896
256K Linux 2.4.4
RedHat 7.1
egcs-2.91.66 19990314/
(egcs-1.1.2 release)
unknown version (static) 0.764 0.799 1.277
MIPS R5000 180MHz IP22
SGI Indy/R5000
32K/32K IRIX 6.5 cc unknown version (static) 0.664 0.716 1.814
MIPS R4400/R4000 200MHz IP22
SGI Indigo2
16K/16K IRIX 6.5 cc unknown version (static) 0.679 0.599 1.248

These benchmarks are single-thread/single-processor benchmarks.  Multi-thread/multi-processor performance is NOT measured.

Memory

Here's a handy memory reference.

name
aka
type
clock
bits
bandwidth
GB/s
comment
PC66

SDRAM
66
64
0.528
10ns
PC100

SDRAM
100
64
0.800

PC133

SDRAM
133
64
1.064

PC150

SDRAM
150
64
1.200

PC600/16

RDRAM
532/266
16
1.064

PC700/16

RDRAM
712/366
16
1.424

PC800/16

RDRAM
800/400
16
1.600

PC800/32

RDRAM
800/400
32
3.200

PC1066/16

RDRAM
1066/533
16
2.132

PC1066/32

RDRAM
1066/533
32
4.264

PC1600
DDR200
SDRAM
200/100
64
1.600

PC2100
DDR266
SDRAM
266/133
64
2.128

PC2400
DDR300
SDRAM
300/150
64
2.400

PC2700
DDR333
SDRAM
333/166
64
2.664

PC3000
DDR350
SDRAM
350/176
64
2.800

PC3200
DDR400
SDRAM
400/200
64
3.200

General comments

Benchmarks are controversial.

They only measure the performance of the applications in the benchmark suite.  For real world performance, the enlightened scientist will measure the target application on actual hardware.  But porting and measuring actual end-user applications is laborious, time consuming, and often cost prohibitive.  So benchmark suites include a range of applications, including coverage of memory-intensive, scalar-integer-intensive, floating-point-intensive, and (recently) communications-intensive applications.

Performance is affected by tuning.  Some benchmarks may be "tuned" on one system better than another.  Some manufactures have tuned compilers or drivers specifically for know benchmarks, resulting in misleading performance expectations for other applications.  Target applications can be tuned significantly via compiler optimization options, profiling, focussed tuning of code in hot spots, and adjustment of software architecture for improved workflow and reduced communication overhead.  But tuning your application on a specific platform is laborious, time-consuming, and often cost-prohibitive.  So benchmark suites are used to give an approximation.

Corporations usually present biased and sometimes misleading performance information, e.g., Sun and IBM want to present their systems in the best possible light.  Benchmark information is often unavailable and unverifiable, or selected to present a systems best features and to hide performance problems.  Some performance "measurements" are just extrapolations of  small system measurements onto larger configurations.

Performance can be a complex system engineering problem.  Breaking performance into aspects of integer, floating-point, memory, communication, disk, etc. doesn't necessarily provide relevant measurements.  A systems approach should be taken for improving the performance of your application, especially with regards to partitioning and communications on multi-processor systems.

There is a lack of freely available "standard" benchmarks.  SPEC (Standard Performance Evaluation Corporation) http://www.specbench.org/ charges for their benchmarks.  Most Windows-based benchmarks are not portable to other environments.  Even after recent web searches, I still find myself left with the BYTE benchmarks.  I'm still looking for something that is both freely available and "standard", and I'm willing to consider anything "better."

Summary - for now, we're stuck with nbench for MEM, INT, and FP metrics.
NoBell Home - gjm - last update 10/7/2004