BogoMIPS
Has anyone else noticed BogoMIPS is zero? Are we not doing the calibrate delay?
Greg Weeks
-bash-2.05b# cat /proc/cpuinfo
system type : MIPS Malta
processor : 0
cpu model : MIPS 4Kc V0.1
BogoMIPS : 0.00
wait instruction : yes
microsecond timers : yestlb_entries : 16
extra interrupt vector : yes
hardware watchpoint : yes
VCED exceptions : not available
VCEI exceptions : not available
-
Quoted 5 lines · Greg Weeks
Has anyone else noticed BogoMIPS is zero? Are we not doing the calibrate delay?
Greg Weeks
Quoted 14 lines
-bash-2.05b# cat
/proc/cpuinfo
system type : MIPS Malta
processor : 0
cpu model : MIPS 4Kc V0.1
BogoMIPS : 0.00
wait instruction : yes
microsecond timers : yestlb_entries: 16
extra interrupt vector : yes
hardware watchpoint : yes
VCED exceptions : not available
VCEI exceptions : not available
-
Probably, because it's no longer relevant these days. It doesn't say anything special.
Quoted 5 lines
The more surprising it is that BogoMIPS have become a benchmark for performance as important as extra inches in spam email. Having been a permanent annoynce over the years due to miss-interpretation by users and due to excessive output on multiprocessor machines Linux by default will no longer print the BogoMIPS number since 2.6.9-rc2.
-- <http://www.linux-mips.org/wiki/index.php/BogoMIPS>
Interestingly, my IP28 still shows the BogoMIPS reading in /proc/cpuinfo:
Quoted 7 lines
stuartl@indigo ~ $ uname -a
Linux indigo 2.6.10-mipscvs-20050115-ip28 #2 Sun Apr 3 08:24:18 EST 2005 mips64 R10000 V2.5 FPU V0.0 SGI Indigo2 GNU/Linux stuartl@indigo ~ $ cat/proc/cpuinfo
system type : SGI Indigo2
processor : 0
cpu model : R10000 V2.5 FPU V0.0
BogoMIPS : 193.53
Quoted 8 lines
wait instruction : no
microsecond timers : yestlb_entries: 64
extra interrupt vector : no
hardware watchpoint : yes
VCED exceptions : not available
VCEI exceptions : not available
stuartl@indigo ~ $
So honestly, I don't know what's happening with BogoMIPS. :-) What I do know however, it isn't worth a cracker in terms of benchmarking value. ;-)
--
+-------------------------------------------------------------+ | Stuart Longland -oOo- http://stuartl.longlandclan.hopto.org | | Atomic Linux Project -oOo- http://atomicl.berlios.de | | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | I haven't lost my mind - it's backed up on a tape somewhere | +-------------------------------------------------------------+
Quoted 3 lines · Stuart Longland
So honestly, I don't know what's happening with BogoMIPS. :-) What I do know however, it isn't worth a cracker in terms of benchmarking value. ;-)
I could care less about it as a benchmarking value, but it's used to do calibrated udelays. If mips doesn't need it because it calibrates some other way then fine. I suspect not though and we're probably using an initial works everywhere value. I don't know though.
Greg Weeks
Quoted 8 lines · Greg Weeks
Quoted 3 lines
So honestly, I don't know what's happening with BogoMIPS. :-) What I do know however, it isn't worth a cracker in terms of benchmarking value. ;-)
I could care less about it as a benchmarking value, but it's used to do calibrated udelays. If mips doesn't need it because it calibrates some other way then fine. I suspect not though and we're probably using an initial works everywhere value. I don't know though.
The bugs is the result of the somewhat messy way the calibration code is working. calibrate_delay() puts it's result into a global variable, loops_per_jiffy. The value is CPU-specific not global, so we need to copy it to a per-processor data structure which we do on SMP but forget to do on uniprocessor. At the same time the actual delay loop code in delay.h knew to use loops_per_jiffy on uniprocessor, so it was actually working ok.
Ralf
Index: arch/mips/kernel/cpu-probe.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/kernel/cpu-probe.c,v retrieving revision 1.43
mips/kernel/cpu-probe.c +0 -1
@@ -17,7 +17,6 @@#include <linux/ptrace.h> #include <linux/stddef.h> -#include <asm/bugs.h> #include <asm/cpu.h> #include <asm/fpu.h> #include <asm/mipsregs.h>
Index: arch/mips/kernel/smp.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/kernel/smp.c,v retrieving revision 1.77
mips/kernel/smp.c +0 -1
@@ -226,7 +226,6 @@/* called from main before smp_init() */ void __init smp_prepare_cpus (unsigned int max_cpus) { - cpu_data[0 ].udelay_val = loops_per_jiffy;init_new_context (current, &init_mm);current_thread_info ()->cpu =0 ;smp_tune_scheduling ();
Index: include/asm-mips/bugs.h
===================================================================
RCS file: /home/cvs/linux/include/asm-mips/bugs.h,v retrieving revision 1.10
asm-mips/bugs.h +5 -0
@@ -8,12 +8,17 @@#define _ASM_BUGS_H#include <linux/config.h> +#include <asm/cpu.h> +#include <asm/cpu-info.h> extern void check_bugs32 (void );extern void check_bugs64 (void );static inline void check_bugs (void ) { +unsigned int cpu =smp_processor_id (); + + cpu_data[cpu].udelay_val = loops_per_jiffy;check_bugs32 ();#ifdef CONFIG_MIPS64 check_bugs64 ();
Index: include/asm-mips/delay.h
===================================================================
RCS file: /home/cvs/linux/include/asm-mips/delay.h,v retrieving revision 1.16
asm-mips/delay.h +0 -6
@@ -15,8 +15,6 @@#include <asm/compiler.h> -extern unsigned long loops_per_jiffy; -static inline void __delay (unsigned long loops) {if (sizeof (long ) ==4 )
@@ -82,11 +80,7 @@__delay (usecs); } -#ifdef CONFIG_SMP #define __udelay_val cpu_data[smp_processor_id()].udelay_val -#else -#define __udelay_val loops_per_jiffy -#endif #define udelay (usecs) __udelay((usecs),__udelay_val)
Quoted 2 lines · Stuart Longland
Probably, because it's no longer relevant these days. It doesn't say anything special.
Nonsense. It's just not printed to the screen by default.
Quoted 3 lines
Interestingly, my IP28 still shows the BogoMIPS reading in
/proc/cpuinfo:Quoted 2 lines
stuartl@indigo ~ $ uname -a
Linux indigo 2.6.10-mipscvs-20050115-ip28 #2 Sun Apr 3 08:24:18 EST 2005
Because you're running a vintage kernel. The 0 BogoMIPS bug was introduced by this CVS change:
revision 1.54
date: 2005/02/21 21:34:24; author: ralf; state: Exp; lines: +2 -2 On multiprocessor systems the BogoMIPS for each CPU was reported was the value for the last CPU having calibrated it's delay loop.
Only the value shown in /proc/cpuinfo on UP kernel was affected, so the effect should be purely psychologic - I know what negative impact low BogoMIPS may have on some people ;-)
Ralf