GNU make のドキュメントから: http://www.gnu.org/software/make/manual/make.html#Parallel
システムの負荷が高い場合は、負荷が低い場合よりも少ないジョブを実行する必要があります。「-l」オプションを使用して、負荷平均に基づいて一度に実行するジョブの数を制限するよう make に指示できます。「-l」または「--max-load」オプションの後には浮動小数点数が続きます。例えば、
-l 2.5
負荷平均が 2.5 を超える場合、make は複数のジョブを開始できません。前の「-l」オプションで負荷制限が指定されていた場合、次の数値を指定しない「-l」オプションは負荷制限を削除します。
より正確には、make がジョブを開始するときに、すでに少なくとも 1 つのジョブが実行されている場合、現在の負荷平均をチェックします。'-l' で指定された制限を下回っていない場合、make は平均負荷がその制限を下回るか、他のすべてのジョブが終了するまで待機します。
稼働時間については、Linux のマニュアル ページから: http://www.unix.com/man-page/Linux/1/uptime/
システム負荷平均は、実行可能または中断不可能な状態にあるプロセスの平均数です。実行可能な状態のプロセスは、CPU を使用しているか、CPU の使用を待機しています。中断不可能な状態のプロセスは、I/O アクセス (ディスクの待機など) を待機しています。平均は、3 つの時間間隔で取得されます。負荷平均はシステム内の CPU の数に対して正規化されていないため、負荷平均 1 は単一の CPU システムが常に負荷をかけられていることを意味し、4 CPU システムでは 75% の時間アイドル状態だったことを意味します。
私は並列のmakefileを持っていて、明らかなことをしたいと思っています.CPUを完全に使用するまでプロセスを追加し続けるようにしますが、スラッシングを誘発していません.
今日の多くの (すべて?) マシンはマルチコアであるため、コアの数に合わせてその数を調整する必要があるため、負荷平均は make がチェックする必要がある数ではないことを意味します。
--max-load
これは、GNU make の(別名-l
) フラグが役に立たなくなったことを意味しますか? マルチコアマシンで並列メイクファイルを実行している人は何をしていますか?