Linux

如何確定傳遞給 make -j 選項的最大數量?

  • May 24, 2021

我想盡可能快地編譯。去搞清楚。並想自動選擇-j選項後面的數字。如何以程式方式選擇該值,例如在 shell 腳本中?

輸出是否nproc等於我可用於編譯的執行緒數?

make -j1 make -j16

nproc給出可用的 CPU 核心/執行緒數,例如,支持雙向 SMT 的四核 CPU 上的 8 個。

make使用該選項可以並行執行的作業數量-j取決於許多因素:

  • 可用記憶體量
  • make每個作業使用的記憶體量
  • make作業受 I/O 或 CPU 限制的程度

make -j$(nproc)是一個不錯的起點,但您通常可以使用更高的值,只要您不耗盡可用記憶體並開始抖動。

對於真正快速的建構,如果您有足夠的記憶體,我建議使用 a tmpfs,這樣大多數作業將受 CPU 限制並且make -j$(nproc)將盡可能快地工作。

引用自:https://unix.stackexchange.com/questions/208568