bagaimana saya bisa menguji apakah ubuntu diaktifkan hyperthreading?

13

Saya merasa bahwa hyperthreading tidak diaktifkan di pc saya. Saya melihat ke dalam /proc/cpuinfodan dijelaskan bahwa saudara kandung memiliki jumlah yang sama dari cpu core. Ini berarti bahwa hyperthreading tidak diaktifkan. Bagaimana saya bisa mengaktifkannya?

Entri bagian dari /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
frekuensirenren
sumber

Jawaban:

15

/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_list menunjukkan tata letak core dan hyperthreads. Untuk membuatnya lebih mudah untuk divisualisasikan, saya sarankan menggunakan perintah lstopo, instal dengan:

sudo apt-get install hwloc

dan jalankan dengan:

lstopo

Desktop ivybridge saya memiliki 4 CPU; masing-masing memiliki hyperthread, jadi kami mendapatkan diagram dengan Cores P # 0..3 dan masing-masing memiliki dua PU (salah satunya adalah hyperthread):

masukkan deskripsi gambar di sini

Jika Anda hanya menginginkan versi teks dari hasil ini, gunakan:

lstopo -
Colin Ian King
sumber
Tidak yakin mengapa belum ada yang membatalkan ini ... Ini adalah utilitas yang sangat bagus.
Huck Bennett
ini sangat keren. Anda melihat total cache, core, hyperthreads all in 1 image
Silver Moon
9

Jalankan topdi terminal, tekan nomor 1di keyboard Anda untuk menampilkan beban per cpu di header, berapa banyak CPU yang dijelaskan di sana?

Jika mereka adalah dua kali lipat dari core yang sebenarnya dalam CPU hyphreading Anda berfungsi sebagaimana mestinya.

Bruno Pereira
sumber
7

Untuk mendeteksi jika Anda menggunakan hyperthreading (alias Intel Hyperthreading Technology), Anda dapat menggunakan dmidecode .

Di terminal:

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

Cari nilai Status dari Populated, Enabled (ditampilkan di bawah di antara * ... *) yaitu "Diaktifkan" berarti bahwa hyperthreading aktif

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

Dalam CPU logis Hyperthreaded Anda akan melihat nilai Status tidak berpenghuni (ditampilkan di bawah antara * ... *):

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

sumber

kebebasan fosil
sumber
Kernel Linux menentukan jumlah CPU dan saudara kandung dari CPU (menggunakan enumerasi topologi CPUID) daripada menggunakan data DMI yang dikonfigurasi BIOS. Saya menduga bahwa data DMI dikonfigurasi pada saat boot dari data CPUID yang sama dengan yang digunakan kernel, namun, mungkin lebih baik untuk mempercayai apa yang telah ditentukan oleh kernel Linux daripada dari data DMI. Seperti yang terjadi, dalam sebagian besar kasus, BIOS mungkin melakukannya dengan benar.
Colin Ian King
Output dmicode tidak berubah jika hyperthreading dinonaktifkan - ini hanya menunjukkan apakah CPU mendukung hyperthreading. Sebagai contoh, pada sistem CPU i7-6600U dengan cacat Hyperhreading dmidecode | grep -i populajuga dicetak Status: Populated, Enabled. Lihat juga jawaban saya .
maxschlepzig
2

di hasil dmidecode, Anda bisa mendapatkan sesuatu seperti

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

di server dengan utas hiper diatur ke ON

atau

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

pada yang diatur ke OFF

pengguna56344
sumber
Ini tidak berhasil. Ini Thread Counttidak berubah jika hiparfreading dinonaktifkan, mis. Pada sistem i7-6600U dengan dmidecode | grep '\(Core\|Thread\).*:'cetakan hipertransmisi dinonaktifkan Core Count: 2 Core Enabled: 2 Thread Count: 4.
maxschlepzig
0

Spoiler: CPU Anda tidak mendukung hyperthreading .

Sebuah alternatif untuk konsultasi database CPU vendor adalah untuk memeriksa /proc/cpuinfountuk htbendera:

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

Bahkan jika hyperthreading dinonaktifkan di BIOS, flag harus dimasukkan dalam output itu.

Untuk memeriksa apakah hyperthreading benar-benar diaktifkan, Anda dapat berkonsultasi dengan file pseudo lain :

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

Nilai yang mungkin adalah: on|off|forceoff|notsupported|notimplemented

Anda dapat mengaktifkan / menonaktifkan hyperthreading dengan menulis on/ offke file pseudo itu, misalnya:

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

Tentu saja, ini tidak akan berhasil jika yang catsebelumnya dicetak forceoff|notsupported|notimplemented.

Biasanya, hyperthreading diaktifkan, secara default. Dan jika dinonaktifkan biasanya dilakukan di BIOS. Jika dinonaktifkan di BIOS, file pseudo kemungkinan berisi forceoffdan Anda harus mengubah pengaturan di BIOS.

maxschlepzig
sumber