2014-02-20 104 views
-1

我有一個單線程程序,它在單獨運行時利用幾乎100%的CPU。如果我在單獨的提示中實例化它的多個實例,它們都會顯着減慢(大約8倍)。我在Ubuntu 12.04上運行jre 1.7.0_25版本,配備英特爾®酷睿™i7-3930K CPU @ 3.20GHz×12和64 GB RAM。什麼可能導致減速?當然,這些程序不能競爭同一個CPU。而且,我一直確保我運行的核心數量比核心數量少。我感謝任何見解。 謝謝, Suresh運行同一個程序的多個實例會減慢所有這些實例的運行速度

+1

這些程序有什麼作用?他們依賴的任何外部資源? (如數據庫,網絡,文件系統) –

+2

很難說不知道程序的功能。但是CPU並不是程序需要的唯一資源。內存,硬盤,網絡:如果有多個程序同時訪問它們,它們會減速。 –

+1

您能否簡要描述程序使用的內容以及它在做什麼?從這一點出發,有大量可能的答案,但是由於缺乏信息,他們中的任何一個都只是猜測而已。關於「相同的CPU」的 –

回答

0

每個實例創建一個獨立的JVM,具有獨特的初始堆(由-Xms JVM參數定義)和程序資源。如果你有太多的實例,操作系統將交換內存到磁盤並且CPU的上下文會在java進程之間不斷切換。

+0

我要求的最大堆大小爲10g,最小堆大小爲默認值:uintx InitialHeapSize:= 1046179712.在啓動這些程序之前,我的計算機上通常有超過70%的64G RAM可用。所以,我非常有信心它不能交換。 – suresh