CentOSコンピュータにLLVMをインストールしようとしています。 LLVMインストールチュートリアルでは、-jn
フラグがとともに指定されますmake
。
公演をしたいと言ってmake -jn
、」make がスワップ領域の問題に遭遇しないように n を選択します。」
このフラグの目的は何-j
ですか、nの値を選択するには?
答え1
make-j
フラグは、コンパイルに割り当てるスレッドの数を示します。
n
この場合、プロセス数のプレースホルダです。
一般的な経験則は、Security n
= CPUのコア数であることです。したがって、デュアルコアシステムを使用している場合は、-j2
8コアシステムを使用できます。-j8
実際にはこれが良い出発点になることができますが、自由に試してみて、自分に最も適したものが何かを確認する必要があります。
答え2
n = コア数の使用が安全かどうかは、すべての並列コンパイル/リンク操作に十分なメモリがあるかどうかによって異なります。さらに、ディスクI / Oの問題が発生する可能性があります。一度だけ実行することが期待される作成タスクの場合は、より低いnを選択して時間がかかるようにすることをお勧めします。
答え3
この-j
フラグは、make(1)
並列に実行されているプロセスの数を示します。最適な値は、実行中のジョブ、依存関係によって異なります。経験的に見ると、プロセッサの数です。-j
(no n
)のみを指定すると、make
できるだけ多くのプロセスが並列に開始されます。
答え4
-j
このフラグがビルド操作に与える影響とそれを慎重に処理する理由の具体的な例は次のとおりです。
LLVMがあるという事実を忘れてMAKEFLAGS=-j5
ビルドしようとしました。パーセンテージ97%
に達すると、ld
同時に5つのプロセスが作成され、それぞれ1.5GB
+ RAMを消費します。最初は20分以内にクラッシュが発生し、残りは私のコンピュータが利用できなくなるまでより多くのメモリを消費し、ついに小さいものを使用することCtrl+C
にしました-j
。私の-j3
コンピュータはまだld
3つのプロセスのために困難を抱えていますが、少なくとも次のように入力できます。いくつかのマイナーな問題があります。