2013-12-11 36 views
0

是否有人知道如何在啓用了超線程的N個核心的計算機上(即有2 * N個並行作業)估算用戶進程的剩餘並行線程。操作系統佔用了多少內核,例如Ubuntu的?可以有多少個並行用戶進程?

回答

1

您的操作系統實現搶先式多任務處理。這尤其意味着沒有線程獨佔核心。相反,CPU時間片分配在準備繼續的線程之間。這種重新分配在每秒鐘內發生多次。

Linux中的uptime命令可以告訴您在最近的1分鐘,5分鐘和15分鐘內平均有多少線程可以運行。

$ uptime 
    23:18pm up 15:17, 3 users, load average: 0.73, 0.62, 0.74 

這裏我們有大約0.7個,平均少於1個線程。不是非常繁忙的機器。

在繁忙的機器上,此數字可能會超過可用邏輯CPU的數量。因此,如果你的2n個用戶進程確實是隨時準備使用的CPU,不送人,因爲他們正在等待來自RAM數據或I/O,那麼操作系統線程的數量可以估算爲

current load average - 2n 

在上面的示例中,此公式不起作用,因爲用戶進程正在等待用戶輸入或I/O,並且CPU大部分處於空閒狀態。

+0

我真的很感興趣在給定的時間點,用戶進程的限制是什麼,可以並行運行給定一個多核心的機器。這與機器在瞬間時刻的物理限制有關。 – Eugen

+0

@Eugen實際上這取決於進程的性質和系統參數,而不是內核數量。在多核CPU上並行執行通常會遇到內存帶寬不足的問題,而服務器操作系統上的操作系統開銷通常會降至最低。你可能想用更一般的術語來重新描述你的問題。 –

相關問題