Noders Note: This has been trimmed: did you really want the full list of BogoMips readings? OK, go to ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini/BogoMips .
BogoMips mini-Howto
Wim van Dorst, baron@clifton.hobby.nl
v30, 2000-11-09
This text gives some information about BogoMips, compiled from various
sources such as news and e-mail. This text, in it most up to date ver
sion, is retrievable from its homepage at www.clifton.nl, and at the
various Linux archives in the file .../HOWTO/mini/BogoMips. Transla
tions are available, as far as I know, in French, Japanese, Italian,
German, Polish, Portuguese, Slovak, Chinese, and Hungarian from appropriate archives. An explanatory article, titled 'the Quintessential
Linux Benchmark,' was published in the Linux Journal, issue January
1996. The BogoMips is also explained in The Jargon File. New mini-
Howto entries for unlisted CPUs will be highly appreciated. They can
be send per e-mail to the author.
1. Lowest and highest BogoMips ratings
The following are the lowest and the highest BogoMips ratings, are reported directly to me, or published on Usenet.
1.1. The lowest Linux boot sequence BogoMips value
- Tim Van der Linden, timvdl@innet.be
- Intel 8088, at 4.77 MHz, ELKS
- 0.02 BogoMips
1.2. The highest single-CPU Linux boot sequence BogoMips value
- Stuart Trusty, stuart@linuxlabs.com
- AMD Athlon at 1100 MHz
- 2182.35 BogoMips
1.3. The highest multiple-CPU Linux boot sequence BogoMips value
- Peter Rival, frival@zk3.dec.com
- 31x Alpha EV67 CPUs, at 731 MHz, SMP
- 46170.90 BogoMips
1.4. The highest non-Linux BogoMips value
- zumbusch@iam.uni-bonn.de
- Parnass2, 144 Pentium II CPUs, in SMP2 configurations, at 400MHz
- Myrinet Multiprocessing over Linux/SMP
- 57684.96 BogoMips
2. The frequently asked questions about BogoMips
Several authors have contributed to my knowledge of BogoMips. In this
place, I would like to thank them highly.
2.1. What are BogoMips
Quoted from the Internet, origin unknown but brought to the attention
by Eric S Raymond esr@thyrsus.com, and Geoff Mackenzie
freon@dialstart.net, there is an humourously illustrative definition
of BogoMips as ''
the number of million times per second a processor
can do absolutely nothing.''
On a more precise basis, from Lars Wirzenius'
wirzeniu@kruuna.Helsinki.FI mail of 9 September 1993, explaining
Bogomips, with additional detailed information by Alessandro Rubini,
rubini@norgana.systemy.it, and by Wim van Dorst:
`MIPS is short for Millions of Instructions Per Second. It
is a measure for the computation speed of a program. Like
most such measures, it is more often abused than used
properly (it is very difficult to justly compare MIPS for
different kinds of computers).
BogoMips are Linus's invention. The kernel (or was it a
device driver?) needs a timing loop (the time is too short
and/or needs to be too exact for a non-busy-loop method of
waiting), which must be calibrated to the processor speed of
the machine. Hence, the kernel measures at boot time how
fast a certain kind of busy loop runs on a computer. "Bogo"
comes from "bogus", i.e, something which is a fake. Hence,
the BogoMips value gives some indication of the processor
speed, but it is way too unscientific to be called anything
but BogoMips.
The reasons (there are two) it is printed during boot-up is
that a) it is slightly useful for debugging and for checking
that the computers caches and turbo button work, and b)
Linus loves to chuckle when he sees confused people on the
news.'
BogoMips are being determined in /usr/src/linux/init/main.c (simple C
algorithm), and the pertaining kernel variable loops_per_sec is used
in several drivers for more serious purpose. The actual delay function
udelay() is in assembler, and therefore each port has its own
definition in /include/asm/delay.h. The loops_per_sec variable and
the udelay() function are used in numerous drivers, see:
cd /usr/src/linux #or where else source is located
find . -name '*.hcS' -exec fgrep loops_per_sec {} /dev/null \;
find . -name '*.hcS' -exec fgrep udelay {} /dev/null \;
The BogoMips calculation loop for the non Intel CPUs is similar but
not the same, because it is programmed in another assembler language.
BogoMips is however the only portable way over the various CPUs
(Intel-type and non Intel-type) for getting an indication of the CPU
speed. Even CPU clock speed is not available on all CPUs.
2.2. How to estimate what the proper BogoMips rating should be
From a initiative by Ian Jackson, ijackson@nyx.cs.du.edu, and Przemek
Klosowski, much updated and expanded by Wim van Dorst for current
data, as listed below:
As a very approximate guide, the BogoMips can be calculated by:
System BogoMips Comparison
Intel 8088 clock * 0.004 0.02
Intel/AMD 386SX clock * 0.14 0.8
Intel/AMD 386DX clock * 0.18 1 (definition)
Motorola 68030 clock * 0.25 1.4
Cyrix/IBM 486 clock * 0.34 1.8
Intel Pentium clock * 0.40 2.2
Intel 486 clock * 0.50 2.8
AMD 5x86 clock * 0.50 2.8
Mips R4000/R4400 clock * 0.50 2.8
Nexgen Nx586 clock * 0.75 4.2
PowerPC 601 clock * 0.84 4.7
Alpha 21064/21064A clock * 0.99 5.5
Alpha 21066/21066A clock * 0.99 5.5
Alpha 21164/21164A clock * 0.99 5.5
Intel Pentium Pro clock * 0.99 5.5
Cyrix 5x86/6x86 clock * 1.00 5.6
Intel Pentium II/III clock * 1.00 5.6
AMD K7/Athlon clock * 1.00 5.6
Intel Celeron clock * 1.00 5.6
Mips R4600 clock * 1.00 5.6
Alpha 21264 clock * 1.99 11.1
AMD K5/K6/K6-2/K6-III clock * 2.00 11.1
AMD Duron clock * 2.00 11.1
UltraSparc II clock * 2.00 11.1
Pentium MMX clock * 2.00 11.1
PowerPC 604/604e/750 clock * 2.00 11.1
Motorola 68060 clock * 2.01 11.2
Motorola 68040 not enough data (yet)
IBM S390 not enough data (yet)
Note that the BogoMips calculation loop does not take full advantage
of the parallelism of various processors, such as the Intel Pentium
and the Alpha 21164.
2.3. How to determine what the current BogoMips rating is
There are three methods to determine the current BogoMips, viz.
1. looking in /proc/cpuinfo, e.g., with `cat /proc/cpuinfo`. This
method is highly preferred above the alternatives.
2. looking in the syslog output to see what was printed there during
booting (if necessary retrieving the information explicitly with
dmesg or syslogk). This alternative gives accurate information but
is more work.
3. using the standalone bogomips program. This is only recommended for
non-Linux system, for reasons pointed out below.
A non-determinative alternative, which is also applicable for non-
Linux systems such as Crays and so, may be the standalone BogoMips
program. From the readme file by Jeff Tranter, jeff_tranter@mitel.com:
`Tired of rebooting your system so you can see how many
BogoMips it's running at today? ... "Bogomips" is a
standalone program that displays your system performance
using one of the world's most recognized benchmarks. It
uses the same code that is used in the Linux kernel while
booting, but runs as a user program. ... Version 1.3 of
BogoMips is now portable and should run on any system that
supports an ANSI C compiler and library.'
Note that due to system load values calculated with the standalone
program on Linux systems may be lower than registered in the list
below. Intrinsically the standalone cannot give precisely similar
information to the boot sequence BogoMips, since system load will
compete with this program run by an ordinary user. Therefore only
boot sequence BogoMips ratings are listed below.
Be aware that the file
sunsite.unc.edu:/pub/Linux/system/status/bogo-1.2.tar.gz/ contains the
latest version 1.3 (sic), which is yet rather outdated. Nonetheless,
due to its good portability, it should compile and run on nearly every
system with a C compiler.
2.4. Variations in BogoMips rating
From
Linus Torvalds, torvalds@cc.helsinki.fi, explaining about the
variation one may see in the BogoMips rating, in c.o.l.development, at
28 April 1994
`The BogoMips calculation loop is "quantizised", so you're
most likely to get the exact same number all the time. You
usually will get different numbers only if the speed is just
on the "edge", when small variations (different time for
interrupt ticks etc) will make it jump from one value to the
other.'
If a kernel is not compiled specifically for the pertaining CPU, also
some (even large) variations of the BogoMips ratings can occur, mainly
due to erroneous alignment. This problem apparently only occurs on the
various x86 CPUs (Intel and clones). Fortunately it can easily be
solved: recompile the kernel specifically for your CPU.
2.5. New BogoMips algorithm?
No, the BogoMips algorithm, contrarily to popular believe, did NOT
change over the various kernel versions. Furthermore, it is
intrinsically the same for all CPUs of all makes.
What did change in kernel version 2.2.14 is the CPU state setting just
before the BogoMips calculation. This affects the BogoMips rating for
all Intel and AMD Pentium variations, resulting in approximately
2*clock, where these were not 2*clock. The entries based on these
upgraded kernel versions are marked in the list below with an initial
*.
2.6. BogoMips ... failed
Suggested by various questions on the net and private mail, e.g., by
Lily, lbliao@alumni.caltech.edu, and by Pierre Frenkiel,
frenkiel@cdfap2.in2p3.fr. In March 1995 they asked:
`When I boot Linux I get the message:
Calibrating delay loop.. ok - 23.96 BogoMips
failed
Where/why has the calibration delay loop failed?'
It didn't fail. If it had failed the text would have been
Calibrating delay loop.. failed
What likely did fail was a driver for some gadget which you may not
have in your machine. Just after calculating the BogoMips rating all
device drivers are initiated. First the SCSI devices, then Net
devices, etc. Any failure is duly reported. Noteworthy is the AHA152x
driver. Other effects of failing drivers (and not of failing BogoMips
calculations) are systems crashes, long waits, and complete system
locks, somewhere close to (just before or just after) outputting the
ok - xx.xx BogoMips text.
Since Linux 1.2 many error messages have improved, so upgrade to at
least that version to find out which particular driver it is that is
failing. Also recompile the kernel to only include the drivers that
are actually needed for your hardware configuration.
2.7. What about clone CPUs (Cyrix, NexGen, AMD, etc)
Cyrix 486-like CPUs need cache enabling software, sometimes referred
to as
BogoBoost software. Cyrix 5x86 and 6x86 CPUs may have their
BogoMips improved drastically by
branch-prediction (BIOS option). Note
that the performance improvement may be marginal. There are several
packages available for adjusting Cyrix CPUs, such as the BogoBoost
patch, cx5x86mod, and set6x86, all from the normal archives, in
obvious places. It is reported the Cyrix 6x86 CPUs may give better
performance when the kernel is compiled with 486-optimization, instead
Pentium-optimization.
NexGen 386-enhanced CPUs, marked as Nx586, are listed as 386-like,
since the fact that they are performing like Pentium machines is not
relevant to BogoMips.
AMD 5x86, also denoted as AMD 486DX5, are quadrupled 486/33 machines.
They are fully in line with other 486 CPUs. The AMD K5 and the K6 are
Pentium-like CPUs, with their own BogoMips multipliers.
. 2.8. Why to pay attention to BogoMips
Let me add that there are only two reasons for paying attention to the
BogoMips rating that is presented on booting Linux:
1. To see whether it is in the proper range for the particular
processor, its clock frequency, and the potentially present cache.
Many CPUs are prone to faulty setups of
- memory cache setting (write-back is wrong for BogoMips, often
reported lower than 5; write-through is ok)
- turbo-buttons (should be ON)
- BIOS-software emulated fake cache (change it for real cache)
- similar cache and clock related things, sometimes also BIOS-
software related
2. To see whether your system is faster than mine. Of course this is
completely wrong, unreliable, ill-founded, and utterly useless, but
all benchmarks suffer from this same problem. So why not use it?
This inherent stupidity has never before stopped people from using
benchmarks, has it? :-)
Note that more serious uses for real benchmarking are addressed in the
Linux Benchmarking Howto by André D. Balsa.
3. Compilation of ratings
Cut for space reasons
4. Signature
The children Roderick, Isolde and Daphne are again back to school and
baby daycare centre. Sheer bliss, since school is where you learn new
things. Isolde comes back home and tell us that "today she learned the
word book and tomorrow she will learn the word hat." When I pointed
out the word hat the other day, she said: "No, daddy, I don't know the
word hat yet, because we have learned the letter aitch yet."
Wijsneus.
Met vriendelijke groeten, Wim 'Dad' van Dorst.
Wim van Dorst, Clifton Scientific Text Services, tel/fax +31 355 242 319
This sentence have three erors