make -jは何か混乱する可能性はありますか? (少なくとも私は長い間それが間違っていた...)。私は、オプションなしの-jオプションがCPUの数に適応すると仮定しましたが、そうではありません。単純に制限は適用されません。これは、大きなプロジェクトの場合、膨大な数のプロセスを作成し(単に "トップ"で見て...)、すべてのRAMを使い果たす可能性があることを意味します。私のプロジェクトの "make -j"が私の16GbのRAMをすべて使用して失敗し、2.5GbのRAM使用量で "make -j 8"が上回ったとき、私はうんざりしました(8つのコアで100%両方の場合)。
効率の面では、何千ものプロセスのスケジューリングにいくらかのオーバーヘッドがあるため、最大限のCPU数以上の制限を使用しない方が効率が良いと思います。作成されるプロセスの総数は一定でなければならないが、 "-j"は一度に多くのプロセスを作成するため、メモリ割り当てが問題になる可能性がある。制限数をCPU数の2倍に設定しても、制限をまったく設定しない場合よりも慎重にすべきです。
PS:いくつかは、より多くの私はきちんとした解決策を考え出した掘りした後に - ちょうどプロセッサの数を読み出し、-jオプションとしてあることを使用します。
make -j `nproc`
出典
2013-08-28 09:06:14
sfx
GNUのLinux/Unix上で作りますか? – Chimera
'make --version'が' make --version'を報告するGNU Make 3.81 – Drise