2012-01-04 48 views
1

我正在嘗試計算具有英特爾超線程的機器上的進程利用率。計算超線程機器中的進程利用率

我指望物理核心 單獨運行時,我的過程是做循環和計數它,當另一個進程(同一個)上運行:

我試圖做計算的時候有一個問題其他邏輯核心(相同的物理核心)。

我發現在我的過程正在進行的循環量中存在差異。我想這與我在超線程機器上運行的事實有關。

有沒有辦法知道我的過程所執行的確切運行時間,因此當我試圖計算過程利用率時,我將能夠將其添加到我的計算中?

+0

頂部應該給你正確使用甚至超線程機器 – 2012-01-04 12:26:51

+0

我的過程是單獨運行(幾乎)在覈心...我想看看加載它是通過計算循環量。頂部會一直顯示98%。這不是爲我好 – user1120875 2012-01-04 17:00:41

+0

您使用的是這種情況下,CPU的98%好了,沒什麼別的可說的。超線程可通過BIOS禁用或其他實用程序,以便將其關閉,看看是否改變數,這可能會給你在其他系統上的CPU使用率更好的視野可能。 – 2012-01-04 17:03:37

回答

2

您只能告訴一個進程需要多少邏輯CPU時間。你不知道它使用物理CPU有多少,它沒有真正定義。
超線程(或,至少,更現代的SMT)不通過將兩個線程之間的物理CPU時間工作。它通過將工作分配給CPU內的執行單元來工作(並且有幾個這樣的單元)。
所以兩個線程都可以同時運行 - 有幾個整數執行單元,還有一些(內存,浮點)。

底線 - 如果線程取邏輯CPU的100%,則需要100%的CPU。這就是你可以說的。