2015-09-27 88 views
0

我不知道是否有直接的答案。我有不同的CPU类型的规格。例如,A和B两个实例。 我想在A和B中运行一些简单的Java控制台应用程序。根据它们的规范,我可以在知道A上的运行时之后假设B的运行时?基于CPU类型的JVM性能

第二个问题是关于核心数字。那么,我可以在知道具有j个内核的同一台机器上的结果之后,假设具有i个内核的机器的运行时间?

这是否有一些近似值?我正在谈论的实例是Amazon EMR实例。

谢谢。

回答

3

基于它们的规格,我可以在A知道运行时后估算B的运行时间吗?

答案是否定的,或者至少没有任何准确性或信心。应用程序的性能通常取决于算法的内存访问模式,内存缓存和虚拟内存硬件之间的复杂交互。如果您将应用程序视为黑盒子,这些都无法预测,即使您了解它在做什么,也很难进行建模。 GC也可能具有相同的不可预知行为。

能否在具有i个核心的同一台机器上知道结果之后,[估计]具有i个核心的机器的运行时间?

答案是否定的。增加内核数量的应用程序性能高度依赖于您设计和实现应用程序的方式。在最好的情况下,你可以线性加速......达到平台内存系统的极限。在最糟糕的情况下,你根本没有加速。


唯一实用的解决方案是做一个猜测...然后尝试各种替代平台,看看你的应用程序如何执行他们。

0

我不知道是否有直接的答案。我有不同的CPU类型的规格。例如,两个实例A和B.我想在A和B中运行一些简单的Java控制台应用程序。根据它们的规范,在知道A上的运行时后,我可以假设B的运行时?

你可以通过使用像PassMark这样的基准来查看相对的性能,从而让人想起它。但是,你可以看到一个应该更快的系统实际上比较慢。这只是一个非常粗略的估计。

第二个问题是关于核心数字。那么,我可以在知道具有j个内核的同一台机器上的结果之后,假设具有i个内核的机器的运行时间?

很难说,如果你有两倍的内核数量,你会得到两倍的性能。

  • 您的应用程序可能无法按核心数量进行扩展,因为您的瓶颈可能是其他资源,例如,网络或磁盘,或者你的程序有太多顺序编码。
  • 当你有更多的内核时,这些内核的速度往往会持续下降,因为这些内核只能产生如此多的热量。

这是否有一些近似值?我正在谈论的实例是Amazon EMR实例。

如果您正在讨论的是虚拟机而不是真实机器,则估计更加困难。您可能会发现具有相同规格的两台虚拟机不会执行相同的操作。例如由于您的应用程序可能会在不同的时间在不同的机器上运行,因此即使机器应具有相同的规格,您也可能会发现其性能会有所不同。