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
grenzfrequence
źródło

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 -
Colin Ian King
źródło
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.

Bruno Pereira
źródło
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

fossfreedom
ź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Ł

użytkownik56344
źródło
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.

maxschlepzig
źródło