Linux
如何確定傳遞給 make -j 選項的最大數量?
我想盡可能快地編譯。去搞清楚。並想自動選擇
-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)
將盡可能快地工作。