ものをコンパイルするとき、私は通常これを速くしたいので、私のワークステーションで私は発行します
make -j16
(gnu)makeは16コアでコンパイルを開始します。しかし、ラップトップに戻ったとき、16個のコアはありません。したがって、同じコマンドを発行すると、マシンがフリーズして死にます。CTRL + ALT + F1などを使用して代替端末に切り替えることもできず、リモートログインも成功しません。CTRL + C、CTRL + 4はいずれもみなされません。(ところで:自動メモリ消去などの自動キルは成功しません)その後、マシンの電源をオフにしなければなりません。(カーネル3.0.xでUbuntu 11.10を使用しています)
1つの解決策は、他の「並列」ターゲットが依存し、「make -j $ NUMCORES」を直接使用しない小さなmakeターゲットを使用して、現在のマシンで使用可能なコア数を事前に取得することです。(私はすでにそれを行っており、ブーストスレッドを使用する小さなc ++プログラムで実現しています)。しかし、これにより、誤って「make -j16」を再度指定することから保護されません。
また、「多すぎる」コアは、使用可能なコアと同じ数(スレッドコアを含む)であってはなりません。+ 1スレッドまたは+2スレッドではマシンが停止しないためです。
問題を緩和するためにulimitsを使用できますか?でも、私は0に、スワップ・スペースを設定する指定についてそれから私は私が中止に変化がなければならないと思います。
make -j16
、回復する可能性はわずかです。
export MAKEFLAGS="-j$(nproc)"
は、を使用できます。特別なメイクファイルは必要ありません。第二に、alias make="nice ionice make"
おそらく?