2012-12-19 21 views
12

टाइम स्टैम्प काउंटर (टीएससी) लिनक्स का समर्थन करने वाले प्रोसेसर में टीएससी का उपयोग कर उच्च रिज़ॉल्यूशन टाइमर विकल्प प्रदान करता है। जो मैं समझता हूं उससे टीएससी एक रजिस्टर है जिसे पढ़ा जा सकता है लेकिन सीपीयू को कॉन्फ़िगर किए गए दर पर बाधित करने का विकल्प प्रदान नहीं करता है। तो लिनक्स में टाइमर इंटरप्ट पीढ़ी के लिए अभी भी एच/जेड एपीआईसी (x86 पर) पर भरोसा करना है, जो आमतौर पर 1000 या 250 पर सेट होता है।क्या टीएससी का उपयोग घड़ी स्रोत के रूप में टाइमर और शेड्यूलिंग ग्रैन्युलरिटी में सुधार करता है?

भले ही टीएससी माइक्रो सेकेंड ग्रैन्युलरिटी पर टाइम स्टैम्प देता है टाइमर/शेड्यूलिंग ग्रैन्युलरिटी एचजेड वैल्यू के आधार पर अभी भी 4 एमएमएस या 1 एमएमएस पर होगा। क्या यह समझ सही है? या टीएससी का उपयोग कर टाइमर ग्रैन्युलरिटी में सुधार करने का कोई विकल्प है?

+0

आप महान परिशुद्धता के साथ बहुत बार कुछ टाइमर ईवेंट प्राप्त करना चाहते हैं, यह वास्तविक समय प्रणाली के लिए एक कार्य है। कर्नेल के रीयल-टाइम तंत्र का उपयोग करके या बहु-कोर सिस्टम पर प्रक्रियाओं के संबंध में खेलकर लगभग समान व्यवहार प्राप्त किया जा सकता है (इसलिए वास्तविक प्रक्रिया होने की प्रक्रिया केवल एक कोर के लिए निर्धारित की जाती है, और अन्य प्रक्रियाएं नहीं हो सकती हैं उस कोर पर चलाएं)। –

उत्तर

9

डिफ़ॉल्ट लिनक्स 2.6 कर्नेल में, प्रोग्रामेबल इंटरप्ट कंट्रोलर (पीआईटी) (सभी पीसी पर उपलब्ध) को सिस्टम टाइमर [1] के रूप में उपयोग किया जाता है। पीआईटी, जैसा कि नाम से पता चलता है, को प्री-निर्धारित दर पर सीपीयू को बाधित करने के लिए प्रोग्राम किया जा सकता है (आमतौर पर, जब कर्नेल बूट हो जाता है)। यह पूर्व-निर्धारित दर वह HZ मान है जिसे आप संदर्भित करते हैं, जो कर्नेल संकलन पैरामीटर CONFIG_HZ के बराबर एक स्थिर रूप से संकलित मान है। [2] तो, आप संकलन समय पर CONFIG_HZ को संशोधित कर सकते हैं और पीआईटी सीपीयू को आवृत्ति पर बाधित करना शुरू कर देगा। हालांकि, ध्यान रखें, कि पीआईटी आंतरिक रूप से कुछ 1.1 9 3 मेगाहट्र्ज की घड़ी से प्रेरित है, इसलिए इस मूल्य से CONFIG_HZ बड़ा सेट करना एक अच्छा विचार नहीं होगा। और जैसा कि में [3]

मल्टीप्रोसेसर प्रणालियों में स्थानीय APIC (Advanded निर्देशयोग्य इंटरप्ट नियंत्रक) की घड़ी interprocessor तुल्यकालन

और में स्पष्टीकरण से जाने के लिए प्रयोग किया जाता है ने बताया [1] , मुझे विश्वास है कि इसकी पीआईटी (और स्थानीय एपीआईसी नहीं) जो एचजेड वैल्यू से बंधी है (कम से कम 2.6 कर्नेल तक)।

अब, आपके प्रश्न पर आ रहा है, सिद्धांत रूप में आपका विचार सही दिखता है। स्थानीय एपीआईसी और पीआईटी जैसे टाइम स्टैम्प काउंटर, एक और समय स्रोत [1] है। [4] में, आपको इसकी पुष्टि मिलती है।

लिनक्स अधिक सटीक समय निर्देशयोग्य अंतराल टाइमर द्वारा दिया उन लोगों की तुलना माप प्राप्त करने के लिए इस रजिस्टर का लाभ उठा सकते हैं। ऐसा करने के लिए, सिस्टम को प्रारंभ करते समय लिनक्स को घड़ी संकेत आवृत्ति निर्धारित करना होगा। वास्तव में, क्योंकि यह आवृत्ति को कर्नेल को संकलित करते समय घोषित नहीं किया गया है, वही कर्नेल छवि CPU पर चल सकती है जिनकी घड़ियों किसी भी आवृत्ति पर टिक सकती हैं।

हालांकि, याद रखें कि प्रत्येक सीपीयू घड़ी चक्र में टाइम स्टाम्प काउंटर बढ़ता है। और यह हमें सीपीयू घड़ी चक्र [5] से जुड़े काउंटर से जुड़े मुश्किल संकटों में लाता है। एक उदाहरण यह है कि आधुनिक सीपीयू बिजली बचाने के लिए अपनी सीपीयू घड़ी दर बदल सकते हैं और इससे टाइम-स्टैम्प काउंटर में संग्रहीत मूल्य को प्रभावित किया जाएगा। यदि ऐसा होता है, तो आप अनुमान लगा सकते हैं कि आपके समय के माप पर इसका असर हो सकता है। साथ ही, एक बिल्कुल निष्क्रिय कर्नेल एचएएलटी निर्देश को कॉल कर सकता है जो बाहरी अवरोध प्राप्त होने तक प्रोसेसर को पूरी तरह बंद कर देता है। इस बार, टीएससी कभी भी वृद्धि नहीं की जाएगी और आप कुछ मूल्यवान 'वेतन वृद्धि' खो देंगे, जो अन्यथा आपके माप को अधिक सटीक बनाते। संक्षेप में, टीएससी को संभालना एक कठिन समस्या है, विशेष रूप से प्रोग्राम करने योग्य बाधा के रूप में उपयोग करने के लिए उपयुक्त नहीं है।

  1. रॉबर्ट लव, एलकेडी - 3 संस्करण।(अध्याय 11)
  2. http://lxr.linux.no/linux+v2.6.31/arch/x86/include/asm/param.h#L5
  3. http://www.6test.edu.cn/~lujx/linux_networking/0131777203_ch02lev1sec7.html
  4. http://www.makelinux.net/books/ulk3/understandlk-CHP-6-SECT-1
  5. http://lwn.net/Articles/209101/
+2

उत्कृष्ट जवाब। एक अतिरिक्त जटिलता है: बहु-सीपीयू प्रणाली पर, व्यक्तिगत कोर के पास अपने स्वयं के टिकर्स होते हैं, जो वास्तुकला, BIOS और चंद्रमा के चरण के आधार पर सिंक्रनाइज़ हो सकते हैं या नहीं। आर्किटेक्चर में ** ** ** सिंक्रनाइज़ किए गए घड़ियों हैं, आरडीटीएससी * अनुक्रम बिंदु * के रूप में कार्य करता है, प्रभावी रूप से एक क्रॉबर। अत्यधिक अनुशंसित। – wildplasser