2015-09-27 30 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實例。

如果您正在討論的是虛擬機而不是真實機器,則估計更加困難。您可能會發現具有相同規格的兩臺虛擬機不會執行相同的操作。例如由於您的應用程序可能會在不同的時間在不同的機器上運行,因此即使機器應具有相同的規格,您也可能會發現其性能會有所不同。