2012-06-19 12 views
7

मैं कुछ धागे की आवृत्ति को नियंत्रित करने के लिए लिनक्स कर्नेल का विस्तार कर रहा हूं: जब वे कोर (किसी भी कोर!) पर निर्धारित होते हैं, तो कोर की आवृत्ति उचित पी लिखकर बदल जाती है। इंटेल के मैनुअल में सुझाए गए अनुसार IA32_PERF_CTL रजिस्टर करें। लेकिन जब विभिन्न "कस्टम" आवृत्तियों के साथ अलग-अलग धागे निर्धारित होते हैं, तो ऐसा लगता है कि सभी धागे का थ्रूपुट बढ़ता है, जैसे कि सभी कोर अधिकतम सेट आवृत्ति पर चलते हैं।इंटेल एमएसआर आवृत्ति स्केलिंग प्रति थ्रेड

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

अंत में, क्या एक सीपीयू मॉडल है जो इस बढ़िया आवृत्ति स्केलिंग को व्यवहार्य बनाता है?

सीपीयू मैं उपयोग कर रहा हूँ इंटेल कोर i5 है 750

+2

सीपीयू कोर विभिन्न वोल्टेज पर नहीं चल सकता है, इसलिए यह विभिन्न आवृत्ति/वोल्टेज जोड़े सेट करने की क्षमता को बाधित करता है। –

+0

सामान्य रूप से, प्रत्येक इंटेल पीढ़ी कोर के बीच अधिक अलगाव लाती है, और इन चीजों पर अधिक सुदृढ़ नियंत्रण की अनुमति देती है। – ugoren

उत्तर

4

आप सक्रिय कोर के लिए व्यक्तिगत कोर आवृत्तियों को नियंत्रित नहीं कर सकते हैं। हालांकि, आप सभी सक्रिय कोरों की आवृत्तियों को समान बना सकते हैं। कारण पिछले उत्तरों में हैं - सभी कोर एक ही सक्रिय वोल्टेज विमान पर हैं। उम्मीद है कि अगली-जनरल हैसवेल प्रोसेसर प्रत्येक कोर को अलग से नियंत्रित करना संभव कर देगा।

2

cpufreq-जानकारी जानकारी के बारे में जो कोर उनके पी राज्यों में तुल्यकालिक होने की जरूरत है प्रदर्शित करेगा:

[[email protected] ~]# cpufreq-info 
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009 
Report errors and bugs to [email protected], please. 
analyzing CPU 0: 
    driver: acpi-cpufreq 
    CPUs which run at the same hardware frequency: 0 1 <---- THIS 
    CPUs which need to have their frequency coordinated by software: 0 <--- and THIS 
    maximum transition latency: 10.0 us. 

कम से कम की वजह से कि, मैं सीधे रजिस्टरों को सेट करने के बजाय cpufreq इंटरफेस के माध्यम से जाने की सिफारिश करता हूं, साथ ही गैर-इंटेल CPU पर चलाना संभव बनाता हूं जिसमें असामान्य आवश्यकताएं हो सकती हैं।

भी कैसे गिरी धागे विशिष्ट कोर पर बने रहें unexpecteded स्विचिंग से बचने के लिए, अगर आपने पहले से ऐसा नहीं किया बनाने के लिए पर जाँच करें।

+0

उत्तर के लिए सभी को धन्यवाद! अब मुझे समग्र तस्वीर मिली है। – user1466329

+0

क्या किसी ने हैसल के साथ यह कोशिश की है? क्योंकि मेरे पास ऐसी वास्तुकला वाली मशीन नहीं है, और मैं सोच रहा था कि अब यह करना संभव है या नहीं; अगर ऐसा होता, तो मैं पुनः प्रयास करूंगा। दूसरा, मुझे नहीं लगता कि मैं cpufreq के माध्यम से जा सकता हूं, क्योंकि मैं शेड्यूलर स्तर पर काम कर रहा हूं। प्रोजेक्ट की एक बड़ी तस्वीर देने के लिए मैं काम कर रहा हूं, अंततः लक्ष्य-जागरूक और स्थिति-जागरूक संसाधन शेड्यूलिंग प्राप्त करने का लक्ष्य है: इसलिए मैं किसी और को निर्णय नहीं छोड़ सकता। – user1466329

+0

कोर एफ़िनिटी सेट करने का विचार, हालांकि, बहुत समझ में आता है। वैसे भी, मुझे आवृत्ति सेटिंग के समय ग्रैन्युलरिटी को भी समझना चाहिए। – user1466329

3

मुझे लगता है कि आप तस्वीर का एक बड़ा टुकड़ा खो रहे हैं!

बिजली और घड़ियों डोमेन पर पढ़ें। एक डोमेन के भीतर सभी प्रोसेसर कोर एक ही पी-स्टेट (यानी, वही आवृत्ति और वोल्टेज) पर चलते हैं। पी-स्टेट कि उस डोमेन में सभी कोर चलेंगे, उस डोमेन में उच्चतम पी-स्टेट का अनुरोध करने वाले कोर की पी-स्टेट हमेशा होगी। एमएसआर इसे बिल्कुल प्रतिबिंबित नहीं करते हैं, न ही कर्नेल का खुलासा करते हुए इंटरफेस करते हैं।

Anandtech इस पर एक अच्छा लेख है: http://www.anandtech.com/show/2658/2

"यह सब बहुत एएमडी के Phenom के समान है, लेकिन जहां दो अलग कैसे वे ऊर्जा प्रबंधन संभाल में है एएमडी अनुरोध करने के लिए अलग-अलग कोर की अनुमति देगा है। विभिन्न घड़ी की गति, नेहलेम अपने सभी कोरों को उसी आवृत्ति पर चलाने का प्रयास करता है; यदि एक कोर निष्क्रिय है तो यह केवल पावर गेटेड है और कोर प्रभावी रूप से बंद हो जाता है। "

मैंने एसबी/आईबी तक बिजली मीटर लगाया नहीं है, लेकिन मेरा अनुमान है कि व्यवहार वही है।

0

मैं योगदान के लिए सभी को धन्यवाद देना चाहता हूं! आगे की जांच, मुझे अन्य विवरण मिले जो मैं समुदाय के साथ साझा करता हूं।

जैसा कि सुझाव दिया गया है, नेहलेम सभी कोरों को एक घड़ी के डोमेन में रखता है, ताकि सभी कोरों में अधिकतम आवृत्ति सेट उन सभी पर लागू हो; कुछ उपकरण निष्क्रिय कोर पर विभिन्न आवृत्तियों को दिखा सकते हैं, लेकिन आवृत्ति को अधिकतम तक बढ़ाने के लिए किसी भी एप्लिकेशन को चलाने के लिए पर्याप्त है। यह, मेरे परीक्षणों से, सैंडी ब्रिज पर भी लागू होता है, जहां कोर और एलएलसी स्लाइस सभी आवृत्ति/वोल्टेज डोमेन में रहते हैं। मुझे लगता है कि यह व्यवहार आइवी ब्रिज के साथ भी होता है, क्योंकि यह केवल 'टिक' पुनरावृत्ति है। इसके बजाय, मेरा मानना ​​है कि हैसवेल अलग-अलग, एकवचन डोमेन में कोर और एलएलसी स्लाइस रखता है, इस प्रकार प्रति-कोर आवृत्तियों को सक्षम करता है। यह http://www.anandtech.com/show/8423/intel-xeon-e5-version-3-up-to-18-haswell-ep-cores-/4

संबंधित मुद्दे