हाइपरथ्रेडिंग को बंद करने के इच्छुक प्रोग्रामर के पास क्या कारण हो सकते हैं?


13

मेरी कंपनी ने पुराने 2 जीबी विंडोज एक्सपी मशीनों को बदलने के लिए सिर्फ नए कंप्यूटर खरीदे हैं। मेरी टीम पर किसी ने ध्यान दिया कि वे हाइपरथ्रेडिंग डिसेबल के साथ आए थे, और सभी को रिबूट करने और इसे चालू करने के लिए कहा। क्या हाइपरथ्रेडिंग डिसेबल वाली मशीन पर प्रोग्रामिंग करने का कोई लाभ है?


1
इंटेल सीपीयू का कौन सा मॉडल आप उपयोग कर रहे हैं, जैसे कोर i5 या i7?
जेबी किंग

@ जेबीके अच्छा सवाल है, मुझे नहीं पता, मेरे पास उन मशीनों में से एक नहीं है।
पॉप्स

गर्मी और पंखे के शोर को कम करने के लिए एक पुरानी पेंटियम 4 नोटबुक पर, और शायद बैटरी को कुछ और मिनटों तक बनाए रखें। नहीं एक जवाब है, क्योंकि यह चाहिए एक प्राचीन इतिहास बात हो, और अपने मामले में लागू नहीं करना चाहिए।
स्टीव 314

लुकासार्ट्स गेम ग्रिम फैंडैंगो में हाइपरथ्रेडिंग के साथ चलने पर ध्वनि इंजन एक दौड़ की स्थिति में चला गया।

जवाबों:


14

हां मैंने एक ऐसे ऐप पर काम किया है, जो एचटी विकलांगों के साथ मशीन पर चलने पर बेहतर प्रदर्शन करता है ।

क्या हुआ था, मूल कोड एक हाइपरथ्रेडेड मशीन (जो आप मान लेंगे कि एचटी के पूरे बिंदु की तरह है) पर चलने के दौरान थ्रेड्स के रूप में कई बार बना देगा। हालाँकि, उन थ्रेड्स का थ्रूपुट थ्रेड के लिए उपलब्ध कैश की मात्रा के प्रति बहुत संवेदनशील था। कैश की एक निश्चित राशि के लिए लड़ रहे दो थ्रेड्स के साथ, प्रति थ्रेड उपलब्ध कैश बहुत कम था और थ्रैशिंग हुआ: अधिक कैश मिस लोड होगा, अधिक मुख्य-मेमोरी एक्सेस लोड होगा, और प्रदर्शन के साथ चलने की तुलना में काफी हिट हुआ कम धागे और अधिक कैश प्रति थ्रेड (जो आपको एचटी अक्षम के साथ मशीन पर ऐप चलाने पर मिला है)।

अंतिम तय यह था कि ऐप एचडब्ल्यू प्लेटफ़ॉर्म को बेहतर तरीके से जांचे और कैश साइज़ ले और कितने धागे बनाने हैं, यह तय करते समय कैश की मात्रा पर ध्यान दिया जाए। किसी भी मामले में समस्या जल्दी से सीपीयू की पीढ़ी के साथ गायब हो गई, जिसने कैश आकार को दोगुना कर दिया (और हमने वास्तव में एचटी से मामूली लाभ देखना शुरू कर दिया)। हालांकि, पूरे एपिसोड ने एचटी की सिफारिश करने की एक लंबी और स्थायी विरासत को छोड़ दिया, जिसे हमारे एसडब्ल्यू पर चलने वाले किसी भी प्लेटफॉर्म पर हमेशा अक्षम किया जाता है , और "किसी भी प्रदर्शन की समस्या के कारण एचटी सक्षम होने वाली मशीन नहीं है? " (मुझे लगता है कि मौलिक समस्या सबसे गैर-गीक्स है, बस समझ नहीं आता कि वास्तव में एचटी क्या है।)


11

मुझे तकनीकी विवरण नहीं पता है, लेकिन जाहिर है अगर कोई ऐप (या ओएस) हाइपर-थ्रेडिंग के लिए अनुकूलित नहीं है, तो हाइपर-थ्रेडिंग वास्तव में प्रदर्शन को कम कर सकता है ।

यहां तक ​​कि इंटेल इस मामले में इसे बंद करने की सिफारिश करता है:

हाइपर-थ्रेडिंग तकनीक के साथ उपयोग के लिए निम्नलिखित डेस्कटॉप ऑपरेटिंग सिस्टम की सिफारिश नहीं की जाती है। यदि आप निम्न डेस्कटॉप ऑपरेटिंग सिस्टम में से एक का उपयोग कर रहे हैं, तो यह सलाह दी जाती है कि आपको सिस्टम BIOS सेटअप प्रोग्राम में हाइपर-थ्रेडिंग टेक्नोलॉजी को अक्षम करना चाहिए: [...]

(स्रोत: http://www.intel.com/support/processors/sb/CS-017343.htm )

इसलिए शायद निर्माता (या आपूर्तिकर्ता) सावधान रहना चाहता था।


हाइपरथ्रेडिंग डीएक्टिवेट होने की तुलना में इसे कुछ गेम को धीमा बनाने के लिए भी जाना जाता है।
Klaim

4
यह दिलचस्प होगा यदि वे काम पर खेले जाने वाले खेलों के प्रदर्शन के बारे में चिंतित थे।
डायटबुद्ध

मल्टी-कोर सिस्टम पर, दो धागे एक ही कोर पर दो हाइपरथ्रेड्स को आवंटित किए जा सकते हैं, बाकी सभी कोर निष्क्रिय हो जाते हैं और प्रत्येक धागे को एक अलग कोर पर रखने की तुलना में बहुत कम प्रदर्शन देते हैं। जब तक ऑपरेटिंग सिस्टम एक ही कोर पर एक अलग कोर और विभिन्न हाइपरथ्रेड्स के बीच अंतर से अवगत नहीं हो जाते ...
Steve314

1
@ Steve314: यह निश्चित रूप से Windows2000 के साथ वापस मामला था (और एचटी को अक्षम करना निश्चित रूप से एक अच्छा विचार था यदि आप इसे चला रहे थे), लेकिन विंडोज एक्सपी को एचटी के बारे में पता होना चाहिए था (उदाहरण के लिए डाउनलोड करें ।microsoft.com/ download/5/7/ 7 /… ) और इस तरह के जाल में नहीं पड़ना चाहिए। मुझे लगता है कि इसी तरह के तर्क को कर्नेल के कुछ संस्करण से लिनक्स में बनाया गया था।
०५ पर समय

6

संभावना से अधिक, OEM सिर्फ रूढ़िवादी हो रहा था। उन्नत करतब अक्षम (जैसे HT, No-Execute bit, vt, आदि ..) के साथ OEM के अक्सर जहाज बंद हो गए। कारण यह है कि कुछ दुर्लभ परिस्थितियां उन सेटिंग्स को विफल कर सकती हैं, और लोग जो वास्तव में सुविधाओं को चाहते हैं, उन्हें आसानी से चालू कर सकते हैं।

इसके अलावा, OS में कुछ दुर्लभ बगों में कुछ सुरक्षा सक्षम होने पर संभावित सुरक्षा समस्याएँ होती हैं। उदाहरण के लिए वर्चुअलाइजेशन तकनीक, एक बार ऐसी समस्या थी। तो, यह सिर्फ विक्रेता रूढ़िवादी है।

हाइपरथ्रेडिंग आमतौर पर इंटरेक्टिव डेस्कटॉप के लिए उपयोगी है, जैसे प्रोग्रामिंग मशीनें। हालाँकि, कुछ लोग इसे बंद कर सकते हैं यदि आपके ऐप बिना एचटी के सर्वर पर चलने वाले हैं। बस संभावित हार्डवेयर अंतर को कम करने के लिए।


2
एचटी के साथ आने वाली मशीनों के लिए लगभग हमेशा यही स्थिति होती है। अधिकतम समर्थन और अजीब समर्थन कॉल की बाढ़ से विक्रेता को बचाना।
पैट्रिक ह्यूजेस

5

हाइपरथ्रेडिंग CPU में नए कोर नहीं जोड़ता है। आपके पास अभी भी एक अंकगणित / तर्क इकाई, एक अस्थायी बिंदु इकाई (...) प्रति कोर है। इसलिए यदि आपके पास कई धागे / प्रक्रियाएं हैं जो बहुत अलग चीजें करते हैं, तो HTT प्रदर्शन में सुधार कर सकता है। लेकिन अगर आपके पास एक या अधिक सामानों को कमोबेश एक जैसे काम करने के लिए है (संख्या क्रंचिंग एप्लिकेशन में असामान्य नहीं), तो प्रदर्शन वास्तव में HTT से बुरी तरह से पीड़ित हो सकता है।


2

शायद बड़े पैमाने पर कोडित कोड में कैश-सुसंगति के मुद्दे? यदि आपके पास CPU कैश असतत है, तो दो थ्रेड के लिए सैद्धांतिक रूप से संभव है कि एक ही डेटा कैश किया गया हो और एक ही समय में इसे अलग-अलग मानों के साथ संशोधित किया जाए। यदि आपके पास सीपीयू और मुख्य मेमोरी (या तो L2 या L3) के बीच कुछ बिंदु पर एकीकृत कैश है, तो संभवत: कुछ तंत्र है जो इसे रोक देगा, लेकिन छोटे कैश के साथ निचले-छोर CPU पर, शायद नहीं।

वैकल्पिक रूप से, यह संभव हो सकता है कि चिप्स पर हाइपरथ्रेडिंग को सक्षम करने में जो इसका समर्थन नहीं करता है वह POST के दौरान एक कोड को फेंक देगा, इसलिए BIOS आपूर्तिकर्ता इसे बंद कर देता है क्योंकि उन्हें नहीं पता है कि सिस्टम में किस प्रकार का CPU होगा।


मेरा अनुमान है - इस सामंजस्य के मुद्दे को हल करने के लिए एक तंत्र है, लेकिन इसमें एक महत्वपूर्ण प्रदर्शन जुर्माना हो सकता है। IIRC, मेमोरी के एक विशेष पेज को केवल किसी भी कैश पेज में स्वतंत्र रूप से लोड नहीं किया जा सकता है - आमतौर पर यह एक-एड्रेस-मैप्स-टू-वन-ऑफ-द-इन-पेज मैकेनिज्म है। हो सकता है कि दो धागे के लिए कुछ कैश पृष्ठों पर लड़ना संभव हो, बाकी को अप्रयुक्त छोड़कर? (शायद मल्टी-कोर के साथ भी, हालांकि संभवतः कम जोखिम के साथ)।
स्टीव 314

0

डेवलपर मशीन पर हाइपरथ्रेडिंग को बंद नहीं करने का एक कारण यह है कि यह कुछ सूक्ष्म मल्टी-थ्रेडिंग बग को छिपा सकता है। लेकिन यह केवल वास्तव में सिंगल-कोर सिंगल-प्रोसेसर मशीन पर लागू होता है। मल्टी-कोर उजागर करेंगे, अगर कुछ भी, परीक्षण के दौरान अधिक मल्टी-थ्रेडिंग बग।

OTOH, मुझे संदेह है कि आप एकल-कोर प्रोसेसर को डिफ़ॉल्ट रूप से अक्षम हाइपरथ्रेडिंग के साथ देखेंगे। मेरा वोट Sleskes जवाब पर है।


0

सिंगल कोर मशीनों पर बहुत सारे पुराने सॉफ्टवेयर लिखे गए थे, और मल्टीकोर मशीन पर चलने पर उसमें कीड़े पड़ सकते थे। संभवतः निर्देश वास्तव में यह कहने के लिए था "यह मल्टीकोर मशीनों में काम नहीं करता है", यह सिर्फ इतना है कि लंबे समय तक हाइपरथ्रेडिंग एकमात्र संभावना मल्टी-कोर मशीन थी जिसे आप आम उपयोग में देखेंगे।

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