web-dev-qa-db-ja.com

ハイパースレッディングが無効になっている場合でも、CPUがハイパースレッディングをサポートしているかどうかをLinuxから確実に判断するにはどうすればよいですか?

以下は、プロセッサが有効か無効かに関係なく、プロセッサがHTをサポートしているかどうかを確認するために行っていることです。

# dmidecode -t processor | grep "Hardware Thread" | wc -l

結果が0の場合、プロセッサはHTをサポートしていません。結果が> 0の場合、そうなります。

しかし、これが普遍的に信頼できるかどうかはわかりません。少なくともUbuntu16.04、18.04、SLES 12でこれを確認しましたが、いくつかのサーバー(Xeons)とラップトップ(Core i5など)に異なるIntelプロセッサが搭載されており、そこでうまく機能します。しかし、dmidecodeがその正確なテキスト「ハードウェアスレッド」をリストしているかどうかをチェックするだけで、どのプロセッサ(たとえば、AMD、ARM多分?))およびすべてのディストリビューションで確実に機能しますか? ?より安全な方法はありますか?

私の知る限り、 lscpu でリストされたHTフラグは、サポートされていないコアi5プロセッサでもリストされるため、完全には機能しません。 HT。

PS。以下の投稿はこのトピックに浮かんでいますが、ハイパースレッディングが有効になっているかどうかは別の問題です: ハイパースレッディングが有効になっているかどうかを確認しますか?buntuがハイパースレッディングをアクティブにしたかどうかをテストするにはどうすればよいですか?

2
Raulinbonn

ご想像のとおり、htフラグは信頼できる指標ではありません。ハイパースレッディングのサポートを意味するものではありません。 「物理パッケージがインテルハイパースレッディングテクノロジーをサポートできることを示します。 /または複数のコア」

dmidecode出力の「ハードウェアスレッド」は、 [〜#〜] smbios [〜#〜] (セクション7.5.9を参照)によって提供されるプロセッサ特性値の特定のフラグに対応します。 、およびそのisは、ハードウェアスレッドのサポートを確実に示すことになっています。単一パッケージのマルチプロセッシングのすべての形式。したがって、SMBIOSを備えたプラットフォームでは、

dmidecode -t processor | grep -q "Hardware Thread"

基礎となるSMBIOS情報と同じくらい信頼できる指標です。

ちなみに、wcを使用する必要はありません。

if dmidecode -t processor | grep -q "Hardware Thread"; then echo HT supported; fi
3
Stephen Kitt