结论与定位
先给个定论:BogoMIPS这个数值,看看就好,千万别当真。它不过是内核在启动时,用一段极其简单的循环做“滴答”校准得到的粗略结果,主要用途是给内核自身的短延时函数(比如udelay)标定一个基准。说白了,它根本不是什么通用的性能指标。
你可能会看到某些处理器这个数值很高,这通常只意味着它的主频更高,或者执行那个特定空循环的速度更快。但用它来对比CPU强弱、作为采购决策甚至系统调优的依据?那就大错特错了。

它是怎么计算出来的
知其然,更要知其所以然。这个数字的来历,本身就决定了它的局限性:
- 内核通过一个叫
calibrate_delay()的函数,测量CPU在1个“jiffy”(内核时间单位)内能执行多少次空循环,得到loops_per_jiffy。 - 然后套用典型公式:BogoMIPS = loops_per_jiffy × HZ ÷ 500000。这里的HZ是内核每秒的时钟滴答数。
- 所以你看,它衡量的其实是“每秒能执行多少条‘伪指令’”。“Bogo”这个词本身就有“虚假、伪劣”的意思,这个名字起得可谓相当诚实了。
为什么它不靠谱
为什么不能依赖这个数字?原因有三:
- 只测“空跑”,不测“真功夫”:它只反映处理器跑简单循环的能力,而决定真实应用性能的关键因素——比如指令级并行度、多级缓存效率、分支预测命中率、SIMD向量化能力——它一概不管。这就好比只测一辆车的怠速转速,来判断它的赛道性能。
- 自身波动大,与性能脱钩:即便是同一块CPU,仅仅因为换了内核版本,或者代码对齐方式有微小变化,BogoMIPS值就可能产生显著波动,但实际的应用性能可能纹丝不动。现实中就有这样的案例:某平台升级内核后,BogoMIPS从约997.78降到了663.55,可业务跑起来一点感觉都没有。
- 无法跨平台比较:不同处理器架构、编译器优化路径、指令集差异巨大,用BogoMIPS做横向对比,无异于关公战秦琼,毫无意义。
应该看什么指标
那么,抛开这个“花瓶”指标,我们该关注什么呢?下面这几个方向才真正切中要害:
- 运行时频率与调度策略:去
/sys/bus/cpu/devices/cpu0/cpufreq/目录下看看。重点关注cpuinfo_cur_freq(当前频率)、cpuinfo_max_freq(最大频率)以及scaling_governor(调频策略,如performance性能模式、ondemand按需模式)。这能告诉你CPU当前正在以什么状态工作。 - 硬件基础规格:
/proc/cpuinfo文件里信息很全。重点抓取model name(型号)、cpu MHz(标称频率)、cache size(缓存大小)以及flags(支持的指令集)。这是CPU的“身份证”和“能力清单”。 - 真实负载测试:这才是黄金标准。用贴近你实际业务的基准测试工具(如计算密集型用SPEC CPU、Sysbench;内存带宽/延迟用lmbench;磁盘IO用fio)或者直接上真实工作负载进行压测,观察吞吐量、延迟及其抖动情况。数据不会骗人。
快速自检命令
理论说完,来点立刻能上手的。打开终端,下面这些命令比只看BogoMIPS有用得多:
- 查看BogoMIPS(满足下好奇心):
cat /proc/cpuinfo | grep -i bogomips - 查看CPU频率与调频策略:
cat /sys/bus/cpu/devices/cpu0/cpufreq/{cpuinfo_cur_freq,cpuinfo_max_freq,cpuinfo_min_freq,scaling_governor} - 查看各频率停留时间分布:
cat /sys/bus/cpu/devices/cpu0/cpufreq/stats/time_in_state - 查看CPU核心规格信息:
cat /proc/cpuinfo | egrep “model name|cpu MHz|cache size|flags”
掌握这几条命令,你就能快速判断系统当前的运行状态、调度策略以及硬件底细,这些信息的参考价值,远超那个孤零零的BogoMIPS数字。
