2011-01-26 34 views

回答

19

還有更多的編譯比CPU速度以及可用核數一個進程可以使用CPU。

在你的情況,我想,每個CPU HT兄弟越來越大約4個進程來執行。當它啓動時,它會阻塞磁盤IO並轉到下一個進程。第二個嘗試打開第二個文件,在磁盤IO上阻塞,並且兄弟移動到下一個進程。在第一個磁盤IO準備好之前啓動四個編譯器並不會讓我感到驚訝。

所以,當第一次在節目源終於看完,編譯器必須開始通過目錄狩獵找到包含(#include)文件。每一個都需要一些open()調用,然後是read()調用,所有這些都可以阻塞,並且所有這些都會放棄其他進程運行的同級。

現在,乘那八個兄弟姐妹 - 每個HT核心將運行至內存訪問塊,這時它會換到其他的兄弟姐妹,並運行了一段時間。一旦第一個兄弟的內存被提取到緩存中,第二個兄弟就可能在等待內存時停頓。

通過使用make -j可以讓您的編譯運行速度提高多少,但在過去,對於我來說,兩倍數量的cpus是一個很好的起點。

1

啓動多個進程仍然有可能給你帶來好處。磁盤帶寬和內存帶寬太重要了很多:例如,在同一個CPU上的另一個進程正在等待文件

相關問題