2016-03-04 19 views
0

的數量較大時執行使-jn,與N> M,其中實際可用的CPU數量,與那些發生了什麼n - m工作?只有工作分派用於執行的OS,其餘N - 米排隊做,或者所有ñ工作派遣和OS是他們之間的上下文切換?化妝-j:會發生什麼,如果作業數量比CPU

回答

2

後者:所有調度的n個作業和操作系統在它們之間的上下文切換

Linux通常會試圖公平地處理進程,所以如果編譯一個大型項目make -j(沒有進程數量限制),很可能會使進程陷入機器並導致進程暫停(由於交換因爲所有進程都不適合RAM)。

Solaris 10並沒有因此而受到影響。

在Linux上進行編譯時,使用可隨作業數量線性擴展的構建系統(例如,非遞歸構建),經驗法則是不要使用比邏輯CPU多的作業(即超線程核心是邏輯CPU )。 A bit of empirical data

+0

+1!這是否與一些大型項目(Opencv)一起使機器崩潰......經驗教訓:使用'-j4'或'-j8' – kebs

相關問題