अगर ubuntu हाइपरथ्रेडिंग को सक्रिय करता है तो मैं कैसे परीक्षण कर सकता हूं?


13

मुझे लगता है कि हाइपरथ्रेडिंग मेरे पीसी पर सक्रिय नहीं है। मैंने गौर किया /proc/cpuinfoऔर बताया गया कि भाई-बहनों की सीपीयू कोर की तुलना में समान संख्या है। इसका मतलब है कि हाइपरथ्रेडिंग सक्रिय नहीं है। मैं इसे कैसे सक्रिय कर सकता हूं?

की आंशिक प्रविष्टियाँ /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 सीपीयू हैं; प्रत्येक में हाइपरथ्रेड होता है, इसलिए हमें C P # 0..3 के साथ एक आरेख प्राप्त होता है और प्रत्येक में दो PU है (इनमें से एक हाइपरथ्रेड है):

यहाँ छवि विवरण दर्ज करें

यदि आप इस आउटपुट का सिर्फ एक पाठ संस्करण चाहते हैं, तो उपयोग करें:

lstopo -

निश्चित नहीं कि किसी ने अभी तक इसे क्यों नहीं उतारा है ... यह वास्तव में एक अच्छी उपयोगिता है।
हनी बेनेट

यह सुपर कूल है। आप कुल छवि में कुल कैश, कोर, हाइपरथ्रेड्स सभी को देखते हैं
सिल्वर मून

9

topएक टर्मिनल में चलाएं , 1हेडर में प्रति सीपीयू लोड करने के लिए अपने कीबोर्ड में नंबर दबाएं, वहां कितने cpus वर्णित हैं?

यदि वे आपके CPU में वास्तविक कोर के दोहरे हैं हाइपरथ्रेडिंग काम कर रहा है जैसा कि इसे करना चाहिए।


7

यह पता लगाने के लिए कि क्या आप हाइपरथ्रेडिंग (उर्फ इंटेल हाइपरथ्रेडिंग टेक्नोलॉजी) का उपयोग कर रहे हैं, आप डमीडोस्कोप का उपयोग कर सकते हैं ।

एक टर्मिनल में:

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

पॉप्युलेटेड की एक मान का मूल्य खोजें , सक्षम (नीचे दिखाया गया है * ... *) अर्थात "सक्षम" का अर्थ है कि हाइपरथ्रेडिंग सक्रिय है

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

एक Hyperthreaded तार्किक सीपीयू में आप एक स्थिति का मूल्य देखेंगे आबादी (के बीच * ... * नीचे दिखाया गया है):

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

स्रोत


लिनक्स कर्नेल, BIOS कॉन्फ़िगर DMI डेटा का उपयोग करने के बजाय CPU (CPUID टोपोलॉजी एन्यूमरेशन का उपयोग करके) से CPU और भाई-बहनों की संख्या निर्धारित करता है। मुझे संदेह है कि कर्नेल द्वारा उपयोग किए जाने वाले उसी CPUID डेटा से DMI डेटा को बूट समय पर कॉन्फ़िगर किया गया है, हालांकि, यह संभवतः सबसे अच्छा है कि लिनक्स कर्नेल ने DMI डेटा के बजाय क्या निर्धारित किया है। जैसा कि होता है, अधिकांश मामलों में BIOS शायद सही हो जाता है।
कॉलिन इयान किंग

यदि हाइपरथ्रेडिंग अक्षम है तो डैमिकोड आउटपुट नहीं बदलता है - यह सिर्फ यह बताता है कि सीपीयू हाइपरथ्रेडिंग का समर्थन करता है या नहीं। उदाहरण के लिए, अक्षम हाइपरथ्रेडिंग वाले i7-6600U CPU सिस्टम पर dmidecode | grep -i populaभी प्रिंट करता है Status: Populated, Enabledमेरा जवाब भी देखिए ।
मैक्सक्लेपज़िग

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
मैक्सक्लेपजिग

0

Spoiler: आपका CPU हाइपरथ्रेडिंग का समर्थन नहीं करता है

सीपीयू विक्रेता के डेटाबेस से परामर्श करने का एक विकल्प ध्वज की जांच /proc/cpuinfoकरना है ht:

$ 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 में सेटिंग को बदलना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.