jak mogę sprawdzić, czy ubuntu aktywowało hiperwątkowanie?


13

Mam wrażenie, że hyperthreading nie jest aktywowany na moim komputerze. Przyjrzałem się /proc/cpuinfoi opisano, że rodzeństwo ma tę samą liczbę co rdzenie procesora. Oznacza to, że hyperthreading nie jest aktywowany. Jak mogę to aktywować?

Wpisy części /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

Odpowiedzi:


15

/ sys / bus / cpu / devices / cpu * / topology / thread_siblings_list pokazuje układ rdzeni i hiperwątków. Aby ułatwić wizualizację, polecam użycie polecenia lstopo, zainstaluj z:

sudo apt-get install hwloc

i biegnij z:

lstopo

Mój pulpit ivybridge ma 4 procesory; każdy ma hyperthread, więc otrzymujemy diagram z rdzeniami P # 0..3 i każdy ma dwa PU (jeden z nich to hyperthread):

wprowadź opis zdjęcia tutaj

Jeśli chcesz tylko tekstową wersję tego wyniku, użyj:

lstopo -

Nie jestem pewien, dlaczego nikt jeszcze tego nie ocenił ... To naprawdę miłe narzędzie.
— Huck Bennett,

to jest super fajne. widzisz całkowitą pamięć podręczną, rdzenie, hiperwątki na jednym obrazie
— Silver Moon

9

Uruchom topw terminalu, naciśnij numer 1na klawiaturze, aby wyświetlić obciążenie na jednostkę centralną w nagłówku, ile procesorów jest tam opisanych?

Jeśli są one podwójnymi rzeczywistymi rdzeniami procesora, hyperthreading działa tak, jak powinien.


7

Aby wykryć, czy używasz hyperthreading (aka Intel Hyperthreading Technology), możesz użyć dmidecode .

W terminalu:

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

Poszukaj wartości Status wypełniony, włączony (pokazany poniżej między * ... *), tj. „Włączony” oznacza, że ​​hiperwątkowanie jest aktywne

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

W Hyperthreaded logical CPU zobaczysz wartość Status unpopulated (pokazany poniżej między * ... *):

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

źródło


Jądro Linux określa liczbę procesorów i rodzeństwa z procesora (przy użyciu wyliczenia topologii CPUID), a nie przy użyciu danych DMI skonfigurowanych w systemie BIOS. Podejrzewam, że dane DMI są konfigurowane w czasie uruchamiania z tych samych danych CPUID, których używa jądro, jednak prawdopodobnie najlepiej jest ufać temu, co określił jądro Linuksa, niż na podstawie danych DMI. Tak się składa, że ​​w większości przypadków BIOS prawdopodobnie robi to dobrze.
— Colin Ian King

Wyjście dmicode nie zmienia się, jeśli hyperthreading jest wyłączony - wskazuje tylko, czy procesor obsługuje hyperthreading. Na przykład w systemie CPU i7-6600U z wyłączonym hyperthreading dmidecode | grep -i popularównież drukuje Status: Populated, Enabled. Zobacz także moją odpowiedź .
— maxschlepzig

2

w wyniku kodu dmidecode możesz uzyskać coś takiego

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

na serwerach z hiperwątkiem ustawionym na WŁ

lub

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

na ustawionych na WYŁ


To nie działa Thread CountNie zmienia jeśli hyperthreading jest wyłączony, na przykład w systemie i7-6600U z HyperThreading niepełnosprawnych dmidecode | grep '\(Core\|Thread\).*:'wydruki Core Count: 2 Core Enabled: 2 Thread Count: 4.
— maxschlepzig

0

Spoiler: twój procesor nie obsługuje hyperthreading .

Alternatywą do konsultacji bazę danych dostawcy procesorów jest sprawdzenie /proc/cpuinfodla htflagi:

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

Nawet jeśli hyperthreading jest wyłączony w BIOSie, flaga powinna być dołączona do tego wyjścia.

Aby sprawdzić, czy hyperthreading jest rzeczywiście włączony, możesz sprawdzić inny pseudo plik :

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

Możliwe wartości to: on|off|forceoff|notsupported|notimplemented

Możesz włączyć / wyłączyć hyperthreading pisząc on/ offdo tego pseudopliku, np .:

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

Oczywiście nie działa to, jeśli catpoprzednio wydrukowano forceoff|notsupported|notimplemented.

Zwykle hyperthreading jest domyślnie włączony. A jeśli jest wyłączony, zwykle dzieje się tak w BIOS-ie. Jeśli jest wyłączony w systemie BIOS, prawdopodobnie zawiera go pseudoplik forceoffi należy zmienić ustawienie w systemie BIOS.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.