オペレーティングシステムで読み取ることができるCPUスレッドの数について問い合わせたいと思います。この質問は、コアスレッドをチェックする方法に関する質問ではなく、コアが表示されない問題を解決する方法についてです。
サーバー仕様
- HPE dl360p第8世代
- CPU: E5-2680 v2 2個
- Debian プロキシモックス
- Biosでハイパースレッディングを有効にする
スレッドCPUはコア20個にスレッド40個になっていますが、確認してみるとスレッドが20lscpu
個だけcat /proc/cpuinfo
表示されます。
サーバーを再起動する前に、スレッドはまだ40を読み取り、再起動した後は20だけ読み取りました。
すべてのスレッドを表示できるアイデアはありますか?
答え1
ハイパースレッディングは、Linuxオペレーティングシステムを介して無効にすることもできます。システムに既に初期解決策が適用されている場合SpectreファミリーのZombieLoad攻撃、オペレーティングシステムレベルのハイパースレッディングを無効にすることができます。回避策は、システムの起動時に適用されます。
Run cat /sys/devices/system/cpu/smt/active
: 返された場合、0
ハイパースレッディングは有効になっていません。cat /sys/devices/system/cpu/smt/control
再起動せずにハイパースレッディングを再度有効にできるかどうかを示します。
nosmt=force
起動オプションを追加または実行して無効にした場合は、echo forceoff > /sys/devices/system/cpu/smt/control
無効化オプション/コマンドを見つけて削除し、システムを再起動してハイパースレッディングを再度有効にする必要があります。
(= Norではない)cat /sys/devices/system/cpu/smt/control
と表示されている場合は、再起動せずにハイパースレッディングを再度有効にできます。off
forceoff
notsupported
echo on > /sys/devices/system/cpu/smt/control
源泉:サーバー障害に関する質問です。そしてカーネル文書。
一方、HP ProLiant DL360p Gen8は2012年に発売され、2016年に廃止されたため、現在は予想寿命はほぼ終わっています。システムが寿命の大部分を実行した場合、システムの再起動時にCPUの1つに障害が発生した可能性があります。