关于虚拟机stress-ng bogo ops指标较物理机高4倍的问题咨询
为什么虚拟机的stress-ng bogo ops是物理机的4倍?
测试背景
- 物理机:Ubuntu系统,stress-ng版本 0.05.23,8核CPU
- 虚拟机:VirtualBox部署的Debian系统,stress-ng版本 0.12.06,2核CPU
- 测试命令(非root用户执行):
stress-ng --cpu 1 --timeout 30s --metrics-brief - 测试状态:两台机器均处于空闲状态,物理机测试期间CPU负载约85%(符合1/8核的预期负载)
物理机测试输出
stress-ng: info: [11750] dispatching hogs: 1 cpu stress-ng: info: [11750] cache allocate: default cache size: 8192K stress-ng: info: [11750] successful run completed in 30.05s stress-ng: info: [11750] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s stress-ng: info: [11750] (secs) (secs) (secs) (real time) (usr+sys time) stress-ng: info: [11750] cpu 6313 30.05 30.04 0.00 210.06 210.15
虚拟机测试输出
stress-ng: info: [3566780] dispatching hogs: 1 cpu stress-ng: info: [3566780] successful run completed in 30.01s stress-ng: info: [3566780] stressor bogo ops real time usr time sys time bogo ops/s bogo ops/s stress-ng: info: [3566780] (secs) (secs) (secs) (real time) (usr+sys time) stress-ng: info: [3566780] cpu 25927 30.00 30.00 0.00 864.11 864.23
问题原因分析
stress-ng的bogo ops(伪操作数)是自定义的相对性能指标,并非标准化的CPU性能度量,其计算逻辑会随着版本迭代发生显著变化:
- 物理机使用的0.05.23是2016年左右的旧版本,CPU压力测试的计数逻辑较为简单,可能每完成一次基础运算循环就计数1次bogo op。
- 虚拟机使用的0.12.06是2021年的新版本,对CPU stressor的实现做了大幅优化:可能将多个运算合并为一次bogo op计数,或是调整了循环内的运算密度,导致单位时间内的计数大幅提升。
本质上,不同版本的stress-ng输出的bogo ops没有直接可比性——这不是虚拟机性能真的远超物理机,而是新旧版本的指标计算规则不一样。
验证建议
如果要做公平的性能对比,需要在物理机和虚拟机上安装同一版本的stress-ng,再执行相同的测试命令,此时得到的bogo ops才具备参考价值。
内容的提问来源于stack exchange,提问作者Senthil
相关产品推荐
相关产品推荐

