Ubuntuがハイパースレッディングをアクティブにしたかどうかをテストするにはどうすればよいですか?


13

私のパソコンではハイパースレッディングが有効になっていないと感じています。調べてみる/proc/cpuinfoと、兄弟はCPUコアと同じ数であると説明されています。これは、ハイパースレッディングがアクティブ化されていないことを意味します。どのようにアクティベートできますか?

の部分エントリ/proc/cpuinfo

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 23
model name  : Intel(R) Core(TM)2 Duo CPU     E8400  @ 3.00GHz
stepping    : 6
cpu MHz     : 2997.000
cache size  : 6144 KB
physical id : 0
siblings    : 2
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 10
wp      : yes

回答:


15

/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_listは、コアとハイパースレッドのレイアウトを示します。視覚化を容易にするために、lstopoコマンドを使用してインストールすることをお勧めします。

sudo apt-get install hwloc

そして実行:

lstopo

私のivybridgeデスクトップには4つのCPUがあります。それぞれにハイパースレッドがあるため、Cores P#0..3の図が表示され、それぞれに2つのPUがあります(これらの1つはハイパースレッドです)。

ここに画像の説明を入力してください

この出力のテキストバージョンだけが必要な場合は、次を使用します。

lstopo -

誰もまだこれを支持していない理由がわかりません...これは本当に素晴らしいユーティリティです。
ハックベネット

これはとてもクールです。合計キャッシュ、コア、ハイパースレッドがすべて1つの画像に表示されます
Silver Moon 14

9

topターミナルで実行し、1キーボードの数値を押してヘッダーのCPUごとの負荷を表示します。そこには何CPUが記述されていますか?

CPUの実際のコアの2倍であれば、ハイパースレッディングは正常に機能しています。


7

ハイパースレッディング(別名Intelハイパースレッディングテクノロジー)を使用しているかどうかを検出するには、dmidecodeを使用できます。

ターミナル内:

sudo dmidecode > /tmp/dmidecode.txt
gksudo gedit /tmp/dmidecode.txt

Populated、Enabled(* ... *の間に以下に表示)のStatus値を探します。つまり、「Enabled」はハイパースレッディングがアクティブであることを意味します

Physical CPU
Handle 0x000C, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 1 CPU 1
Type: Central Processor
Family: Xeon
Manufacturer: GenuineIntel
ID: 43 0F 00 00 01 03 00 00
Signature: Type 0, Family 15, Model 4, Stepping 3
Flags:
FPU (Floating-point unit on-chip)
CX8 (CMPXCHG8 instruction supported)
APIC (On-chip APIC hardware supported)
Version: Intel Xeon
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Populated, Enabled*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0004
L2 Cache Handle: 0x0005
L3 Cache Handle: Not Provided

ハイパースレッド化された論理CPUでは、ステータス値に値が設定されていません(以下に* ... *の間に表示されます):

Handle 0x000D, DMI type 4, 32 bytes
Processor Information
Socket Designation: Socket 2 CPU 2
Type: Unknown
Family: Unknown
Manufacturer: Not Specified
ID: 00 00 00 00 00 00 00 00
Version: Not Specified
Voltage: 1.5 V
External Clock: 200 MHz
Max Speed: 4000 MHz
Current Speed: 3800 MHz
Status: *Unpopulated*
Upgrade: ZIF Socket
L1 Cache Handle: 0x0006
L2 Cache Handle: 0x0007
L3 Cache Handle: Not Provided

ソース


Linuxカーネルは、BIOSで構成されたDMIデータを使用するのではなく、CPUの数とCPUからの兄弟(CPUIDトポロジ列挙を使用)を決定します。DMIデータは、カーネルが使用するのと同じCPUIDデータからブート時に構成されると思われますが、おそらく、DMIデータからではなく、Linuxカーネルが決定したものを信頼するのが最善です。たまたま、ほとんどの場合、BIOSが正しく設定しています。
コリンイアンキング

dmicodeの出力は、ハイパースレッディングが無効になっていても変わりません-CPUがハイパースレッディングをサポートしているかどうかを示すだけです。たとえば、ハイパースレッディングが無効になっているi7-6600U CPUシステムでdmidecode | grep -i populaも印刷されStatus: Populated, Enabledます。私の答えもご覧ください。
maxschlepzig

2

dmidecodeの結果では、次のようなものを得ることができます

    Core Count: 6
    Core Enabled: 6
    Thread Count: 12

ハイパースレッドがオンに設定されているサーバー上

または

    Core Count: 6
    Core Enabled: 6
    Thread Count: 6

オフに設定されているもの


これは機能しません。Thread Countハイパースレッディングが無効になってハイパースレッディングとi7-6600Uシステム上の例えば、無効になっている場合は変更されませんdmidecode | grep '\(Core\|Thread\).*:'プリントをCore Count: 2 Core Enabled: 2 Thread Count: 4
maxschlepzig

0

ネタバレ:CPU はハイパースレッディングをサポートしていません

CPUベンダーのデータベースを調べる代わりに/proc/cpuinfohtフラグを確認することもできます。

$ grep -o '\<ht\>' /proc/cpuinfo

BIOSでハイパースレッディングが無効になっている場合でも、その出力にフラグを含める必要があります。

ハイパースレッディングが実際に有効になっているかどうかを確認するには、別の擬似ファイルを参照できます

$ cat /sys/devices/system/cpu/smt/control

可能な値は次のとおりです。 on|off|forceoff|notsupported|notimplemented

擬似ファイルにon/ offを書き込むことで、ハイパースレッディングを有効/無効にできます。例:

# echo off > /sys/devices/system/cpu/smt/control

もちろん、cat以前に印刷されたものの場合、これは機能しませんforceoff|notsupported|notimplemented

通常、ハイパースレッディングはデフォルトで有効になっています。そして、それが無効にされている場合、それは一般的にBIOSで行われます。BIOSで無効になっている場合、その擬似ファイルに含まれforceoffている可能性が高く、BIOSの設定を変更する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.