簡體   English   中英

如何使用gnu Make確定--load-average的良好值?

[英]How to determine a good value for --load-average using gnu Make?

在Make this flag中存在:

-l [load], - load-average [= load]指定如果有其他作業正在運行且負載平均值至少為load(浮點數),則不應啟動新作業(命令)。 如果沒有參數,則刪除先前的加載限制。

您是否有一個很好的策略來確定負載限制的值? 我的機器似乎差別很大。

可接受的負載取決於CPU核心的數量。 如果有一個核心,則超過1的負載平均值會超載。 如果有四個核心,則超過四個負載的平均值是過載。

人們通常只使用-j開關指定核心數。

請參閱此處的一些經驗數據: https//stackoverflow.com/a/17749621/412080

我建議不要使用-l選項。

原則上, -l似乎優於-j -j說,開始這么多工作。 -l說,確保這么多工作正在運行。 通常,那些幾乎是相同的東西,但是當你有I / O綁定的工作是其他奇怪的,那么-l應該更好。

也就是說,平均負載的概念有點可疑。 它必然是對系統上發生的事情的抽樣。 因此,如果您運行make -j -l N (對於某些N )並且您有一個編寫良好的makefile,那么make甚至會在系統的第一個樣本之前立即啟動大量作業並耗盡文件描述符或內存可以承擔負荷。 此外,負載平均值的計算因操作系統而異,有些模糊不清的操作系統根本沒有。

在實踐中,你也可以使用-j並且會減少頭痛。 要從構建中獲得更多性能,請調整makefile,使用編譯器選項,並使用ccache或類似功能。

(我懷疑-l選項的最初原因源於多個處理器很少且I / O非常慢的時候。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM