使用bogomips估计cpu周期有多合理?

时间:2016-01-06 20:09:31

标签: linux performance

如果我有一个长时间运行的进程,平均使用10%的CPU作为它的工作,并且我并行运行它的两个副本,我可以期望它们共同使用20%的CPU。或者,如果我在不同CPU上运行一个副本,速度是原来的两倍,我可以期望它使用该CPU的5%。

我想要做的是处理这种过程的CPU要求,但是以依赖的方式合理地使用CPU ,即不是百分比。

我想知道通过将其CPU百分比乘以我测量它的机器的bogomips数量,为这样的应用程序分配一个简单的“每秒需要周期数”的数字是多么有意义。也就是说,在博格值为1000的机器上使用10%CPU的过程可以说每秒需要100,000,000(伪造)指令。

(免责声明:当然我知道bogomips是假的,指令不等于周期,而且不同的处理器系列之间的周期和指令时间完全没有可比性。我在这里寻找粗略的线性比较,而不是精确计数。)

更详细一点:假设我有一个系统,其中包含在可能受CPU限制的计算机上运行的各种长时间运行的进程。我可能想提前预测它们是否会在没有CPU过载的情况下运行。或者我可能想要实现检查(简单的),没有进程使用比预期更多的CPU。我愿意事先凭经验测量每个过程的性能,以帮助我做出这些预测并实施这些检查。我在这里探索的是,衡量绩效的正确单位是什么?

例如,今天我可能正在处理器X上运行进程A,B,D,E和H.我可能会发现进程使用的CPU百分比是10,5,1,5和20% , 分别。 10 + 5 + 1 + 5 + 20是41,41小于100,所以我很好。

但是明天我可能想要在以不到一半的时钟速率运行的不同处理器Y上运行进程A,B,C,H和J.即使我也对进程C和J的性能有所了解,当CPU(百分比为)是移动目标时,尝试基于百分比进行数学运算似乎是不必要的麻烦。

如上所述,我可能还想为每个长期运行的流程分配一个明确的CPU“预算”,为了理智,我可能希望该预算在一段时间内保持合理有效。也就是说,我可能想说过程A只允许每秒使用100,000,000个周期。如果它曾使用150,000,000,那就错了。但是如果我明天将所有内容移动到速度提高2倍的CPU,我不希望进程A能够使用两倍的数量,因为我可能会考虑将额外的CPU功率用于其他进程。

最后,如果这有任何意义,如果乘以博格我不是一个好的方式来做我想做的事情,有没有人有更好的想法?

(哦,还有一个免责声明:对于多处理器机器和多核处理器来说,这个问题显然变得更加复杂。我会担心这些额外的皱纹,而不是今天。)

1 个答案:

答案 0 :(得分:0)

完全不合理。不,真的。事实上,提出删除bogomips,正是因为它们毫无意义,但被覆盖了,因为它打破了一些用户'功能:https://lwn.net/Articles/627930/(搜索' bogomips')。