確かな答えを得るのに十分な情報はありません。まず、-j2を指定して実行した場合にのみ起こるかどうかは不明です。並列性を持たない(no-j)を実行するとどうなりますか? 「2コアのCPU使用率が100%になる」と言うと、そのCPUで何が起こっていますか?別の端末で「top」を実行してビルドを開始すると、何が上に表示されますか?
"make -d -j2"を実行すると、CPUが100%になる直前にどのプログラムが実行されていますか?
4つのコアがあり、2つしかビジーではないため、デスクトップが応答しないという事実も、CPU使用率ではなく他の問題を示唆しています。たぶん何かあなたのRAMを噛んでいるのでしょうか?しばらくするとシステムが戻ってきますか(OOMの殺人犯が関与して何かを踏んだことを示しています)?
もしそれが役に立たないなら、strace -m make -j2のようなmakeを実行して、何が起こっているのかを知ることができます。これはメートルトンまたは2つの出力を生成しますが、CPUが固定されている場合、何かが何度も繰り返し実行されていることがヒントを得るかもしれないことがわかります。
- それは全然しないですが、むしろコマンドmakeがそれはちょうどあなたのシステムをダウンさせています実行されているものは何でも:
基本的に私は、これらの可能性を見ることができます。あなたはC++コードをコンパイルしているだけで、どこかにバグがないかぎりそうはないと思われます。
- Makeは無限に再帰します。 makeはそれ自身のmakefileとインクルードされたmakefileを再構築し、再実行します。インクルードされたメイクファイルを再構築するためのルールを細かく定義するのではなく、makeがいつも古くなっていると判断し、/ rexecを永遠に再構築することができます。
- 何か他
うまくいけば、上記のヒントは何が起こっているのを発見への道にあなたを設定します。
ハイパースレッディングまたは4つの物理コアを持つ2つのコアですか? –
@JesusRamos私はそれが4つの物理的なコアだと信じて:) –
それはUbuntuでのみ起こるか? 2つのコアが使用されているので、あなたのデスクトップは依然としてかなり応答しているはずです –