/proc/cpuinfo
「cpu core」フィールドが頻繁に異なる値をエクスポートすると、サーバーで奇妙な動作が発生します。/proc/cpuinfo
正確には8個のCPU(1個の物理x 4個のコアx 2個のハイパースレッド)がありますが、CPU-coresフィールドは4(正しい)または65531、65528、...(あまり正確ではありません)です。無効な数字を報告するのと同じ仮想CPUのようです。
なぜ私たちは興味を持っていますか?さて、サードパーティのライブラリの1つが/proc/cpuinfo
ライセンスに指紋を使用しているため、コアの数が変わるため、欠陥があります。
- これ見た人いますか?
- これがハードウェアのバグかOSのバグなのかご存知ですか?
- 問題を診断して解決する方法に関する提案はありますか?
情報を提供していただきありがとうございます。
以下は出力の例です/proc/cpuinfo
。
cpu cores : 4
cpu cores : 20
cpu cores : 20
cpu cores : 20
cpu cores : 4
cpu cores : 4
cpu cores : 4
cpu cores : 65528
答え1
すべての情報を持っているわけではありませんが、現在はLinuxカーネルのバグのように見えます。これはgithubに送信この問題を解決するために行われているようです。ラベルは、この修正が4.16.Xカーネルにあることを示すようです。提出されたコメントは次のとおりです。
この修正がない場合は、
/proc/cpuinfo
CPUコアをオフラインにしてオンラインに戻してから、次の例に示すように、誤ったCPUコアの数が表示されます。このパッチは、論理CPUをシャットダウンするときに常にbooted_cores変数を0に設定することでこの問題を解決します。
これは、「ターボブースト」機能がコアを無効にすることも懸念していますが、ボックスは時々スリープモードによって引き起こされるようです。カーネルのアップグレードは簡単なオプションではないため、この問題を解決できるスリープモードと休止状態をオフにしています。
これまで私たちは試しました次のグラップ設定どのいいえ動作しているような、または少なくともコンピュータが休止状態になっているため、この問題が発生するのを防ぐことはできません。
intel_idle.max_cstate=0
processor.max_cstate=1
また、このページについて見つけました。ターボブーストの無効化。