मैं घड़ी के बहाव को कैसे माप और रोक सकता हूं?


15

कई उत्पादन प्लेटफार्मों पर हमने ऐसे लक्षण देखे हैं जो यह बताते हैं कि दिन घड़ी का समय समय-समय पर आगे या पीछे कूद रहा है। छलांग आम तौर पर 1 सेकंड के आसपास होती है, आमतौर पर रद्द कर देते हैं (इसके बाद आगे की ओर कूदते हैं और उसके तुरंत बाद पीछे की ओर) और प्रति दिन लगभग 50 बार होते हैं। पीक एप्लिकेशन के उपयोग के समय और उच्च डिस्क I / O संचालन जैसे दैनिक बैकअप के दौरान यह बहाव सबसे अधिक ध्यान देने योग्य है। ये बहाव हमारे नरम वास्तविक समय के संवेदनशील अनुप्रयोग को प्रभावित कर रहे हैं।

सिस्टम Oracle Netra X4250 और Netra X4270 सर्वर हैं, जो SLES 11SP2 को 3.0.58-0.6.6-डिफ़ॉल्ट कर्नेल के साथ चलाते हैं।

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

हमने एनटीपी को निष्क्रिय कर दिया है , लेकिन इससे बहाव पर कोई प्रभाव नहीं पड़ा है। क्या ऐसे उपकरण हैं जो दिन घड़ी के बहाव का समय मापते हैं? हम इससे कैसे बच सकते हैं?

ये उत्पादन प्लेटफ़ॉर्म हैं, और हम अपनी प्रयोगशालाओं में समस्या को फिर से नहीं बना सकते हैं, इसलिए मेरे प्रयोग करने की क्षमता सीमित है। यदि मेरे अपने उपकरणों पर छोड़ दिया जाता है, तो मैं बहाव को मापने के लिए एक उपकरण लिखूंगा, और शायद एक एचपीईटी घड़ियों के साथ प्रयोग करूंगा।


5
NTP को अक्षम करने से घड़ियां बहुत अधिक अस्थिर हो जाती हैं ... केवल यही कारण है कि मैं NTP को घड़ी को लाइन में न रखने के लिए देख सकता हूं कि घड़ी बेकार है, और NTP इसे अपडेट करने से मना करता है (देखें ntpdate(8)या देखें ntpd(8))।
वॉनब्रांड

1
एनटीपीडी घड़ी के बहाव के लिए ट्रैक और सही करता है, लेकिन आपके पास बहाव नहीं है। समय के साथ समान मात्रा में बहाव लगातार एक ही दिशा में होता है। यदि यह बेतरतीब ढंग से आगे और पीछे कूदता है, तो इसका अनुमान लगाने का कोई तरीका नहीं है, और इसके लिए समायोजित करें।
पैट्रिक

1
@ पैट्रिक ने जो कहा वह सही है, आपके द्वारा बताई गई समस्या आगे और पीछे के समय में, दिन में कई बार एक अलग कूद है। NTP बहाव पर अच्छी तरह से काम करता है, लेकिन इससे आपको बहुत मदद नहीं मिलेगी। कुछ संभावना है कि आपके सिस्टम की तारीख को कुछ बाहरी समय स्रोत पर रीसेट किया जा सकता है जिसमें शायद केवल 1 सेकंड का रिज़ॉल्यूशन हो। यदि आपके सर्वर x86 * हार्डवेयर RTC स्रोत हैं और कुछ क्रॉन अपराधी का काम कर सकते हैं। जहाँ तक घड़ी की माप मापने की बात है तो ब्राचली का ntpdate उत्तर एक उचित दृष्टिकोण है, बशर्ते एक अच्छा स्ट्रैटम 1 क्लॉक संदर्भ का उपयोग किया जाता है: एक मिनट में एक बार चलाएं और चित्र के लिए परिणाम प्राप्त करें।
डुआनेव

1
एक नए सर्वर ( drdobbs.com/embedded-systems/… ) पर शुरू होने वाले NTP के इस मूल्यांकन के दौरान दौड़ा । एक नया क्रिस्टल सीखने में एनटीपी घंटे लगते हैं। वास्तव में बुरे क्रिस्टल के लिए NTP को प्रशिक्षण के दौरान कई बार महत्वपूर्ण मात्रा में घड़ी को 'स्टेप' करना होगा (उस लेख में Figs 4 और 5 देखें)। 118ppm के ntp.drift में एक अंतिम मान प्रति सेकंड 10 सेकंड या हर 30 मिनट में 208ms है। यद्यपि यह वह नहीं है जो ओपी देख रहा था, एनटीपी शुरू में समय पर ध्यान देने योग्य कूदता पैदा कर सकता है।
डुआनेव

जवाबों:


8

क्या ऐसे उपकरण हैं जो दिन घड़ी के बहाव का समय मापते हैं?

एकमात्र उपकरण जो मुझे पता है कि NTP उपकरण हैं जिन्हें पर्याप्त होना चाहिए। आपको वास्तव में किसी दिए गए घड़ी स्रोत के खिलाफ सिंक करने के लिए ntpd को कॉन्फ़िगर करने की आवश्यकता नहीं है आप केवल गणना किए गए ऑफसेट को लाने के लिए -dविकल्प का उपयोग कर सकते हैं ntpdate

उदाहरण:

[davisja5@xxxadmvlm08 ~]$ ntpdate -d clock.redhat.com 2>/dev/null | egrep "^offset"
offset -0.004545
[davisja5@xxxadmvlm08 ~]$

-d डीबग विकल्प है जो वास्तव में सिस्टम घड़ी को छूने के बिना NTP काम करता है।

इस पर कोई सलाह कि हम इससे कैसे बच सकते हैं?

मैं बहुत आश्चर्यचकित नहीं हूं कि आप इसे देव / परीक्षण वातावरण में पुन: पेश करने में सक्षम नहीं हैं क्योंकि यह संभवतः हार्डवेयर घड़ी के कारण है। यदि आपके पास किसी के साथ हार्डवेयर समर्थन है, तो मैं आपकी मशीनों को सेवित करने का प्रयास करूंगा। एक संभावना इस उत्पादन मशीन के लिए देव मशीनों में से एक का कारोबार कर रही है, पूर्व PROD सिस्टम को ठीक कर रही है और इसे PROD में बदलने के लिए देव मशीन के रूप में फिर से पेश कर रही है।

इसमें से कुछ, हार्डवेयर क्लॉक सोर्स को बदलना आप सभी के बारे में है। यदि आप स्वैप बात नहीं करते हैं या नहीं कर सकते हैं तो मैं सुझाव दूंगा कि आप हाट मार्ग पर जाएं। आप परीक्षण कर सकते हैं कि क्या घड़ी स्रोत परिवर्तन सिस्टम सेवाओं के साथ खिलवाड़ करता है और फिर इसे ओला मारी के रूप में उत्पादन में तैनात करता है।


"उपाय क्लॉक ड्रिफ्ट" से, मेरा मतलब एक संदर्भ समय स्रोत से बहाव नहीं था, जैसे कि एनटीपी आपको देता है। मेरा मतलब था कि एक उपकरण जो निरंतर समय सीमा पर दिन की घड़ी के समय में "छलांग" का पता लगा सकता है। उदाहरण के लिए, प्रत्येक 50ms में दिन के नमूने का समय लें, और रिपोर्ट करें कि अंतिम नमूने से अंतर 50ms से बहुत अधिक है या नहीं। यदि दिन घड़ी का समय किसी भी कारण से अंतर्निहित हार्डवेयर घड़ी से बह रहा हो तो ऐसा उपकरण दिखाएगा।
ब्रेट

1
ऐसे हस्तक्षेप की उपस्थिति की संभावना नहीं है जो आप हल करने की अपेक्षा से अधिक प्रदर्शन गिरावट का कारण बनेंगे? सभी संभावना में, हालांकि, यह एक हार्डवेयर समस्या है, इसलिए आपको इस समस्या के बिना हार्डवेयर को सेवित करने या घड़ी स्रोत का उपयोग करने की आवश्यकता है। tscसीपीयू में आधारित है इसलिए यह समझ में आता है कि उच्च सीपीयू गतिविधि हार्डवेयर घड़ी के साथ एक समस्या को ट्रिगर करेगी। यदि आपके लिए हेट पर्याप्त रूप से तेज़ है, तो आपको बस यह कोशिश करनी पड़ सकती है कि सेवा प्राप्त करें, या स्वैप चीज़ करें। वे एकमात्र विकल्प हैं जो मैं आपके लिए देख सकता हूं।
ब्राचली

3

एक समाधान का उपयोग करना है HPET

हाई प्रिसिजन इवेंट टाइमर भी देखें

इसे बूट पैरामीटर उपयोग के रूप में सेट करने के लिए

clocksource=hpet

पुराने हार्डवेयर पर TSCअक्सर अस्थिर होता था और कर्नेल द्वारा अक्षम किया जाता था।

मल्टी-कोर / हाइपर-थ्रेडेड सीपीयू, कई सीपीयू के साथ सिस्टम और हाइबरनेटिंग ऑपरेटिंग सिस्टम के आगमन के साथ, टीएससी को सटीक परिणाम प्रदान करने पर भरोसा नहीं किया जा सकता है ...

समय टिकट काउंटर


एक उत्पादन प्रणाली पर घड़ी घबराहट के लक्षणों को प्रदर्शित करते हुए मैंने घड़ियां को ढकेलने के लिए स्विच किया। यह देखा घड़ी घबराना लक्षण पर कोई प्रभाव नहीं था।
ब्रेट

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

1

मैंने हमारे अनुप्रयोग द्वारा प्रदर्शित विलंबता लक्षणों के साथ घड़ी के माप को सहसंबंधित करने के लिए एक अधिक विस्तृत उपकरण लिखा। इस उपकरण से यह पता लगता है कि दिन की घड़ी के लिनक्स समय में मुझे पहले से क्या संदेह था।

इतनी लंबी कहानी छोटी, मेरी प्रारंभिक परिकल्पना अमान्य थी। लेकिन मैंने जवाब और लिंक से लिनक्स घड़ियों के बारे में बहुत कुछ सीखा, इसलिए सभी ने जवाब दिया!


3
(...) मेरी प्रारंभिक परिकल्पना अमान्य थी क्या आप हमें बता सकते हैं कि वास्तविक कारण क्या था?
पियोत्र डोब्रोगोस्ट

0

क्या घड़ी तब तक नीरस नहीं होगी जब तक कि कोई इसे बदल न दे? बैकवर्ड जंप संभव नहीं होना चाहिए। घड़ी सेट करने के लिए कुछ होना चाहिए - एक क्रोन नौकरी या कुछ अन्य डेमॉन (उदाहरण के लिए एक कॉल hwclock --adjust)। मुझे याद है कि ntp स्वयं बहाव के लिए आँकड़े अद्यतन करता है और इसके लिए नियमित रूप से क्षतिपूर्ति करता है और यदि आप लंबे समय तक ntp को चलाने में विफल रहते हैं और एक बहुत बड़ी ऑफसेट प्राप्त करते हैं, तो यह आपके द्वारा रीसेट न किए जाने पर दिनों के लिए समय को गड़बड़ कर देता है /etc/adjtime। आपके पास सेट अप जैसा कुछ हो सकता है - कुछ ऐसा जो समय-समय पर घटता है (और कूदता है)।

ntp वास्तव में इस समस्या का मुकाबला करने के लिए है।


यही मैंने भी सोचा था। हार्डवेयर क्लॉक स्रोतों के बारे में मेरे पढ़ने से पता चलता है कि काउंटर को मोनोटोनिक रूप से बढ़ाना चाहिए। यदि यह सच था, तो सबसे खराब रूप से हमें अनियमित टिक दरों का निरीक्षण करना चाहिए, लेकिन कभी भी पीछे नहीं हटना चाहिए। मल्टीप्रोसेसर सिस्टम पर, मैं समझता हूं कि tsc को प्रोसेसर के बीच सिंक्रोनाइज़ करने की आवश्यकता है - शायद यही वह है जो पीछे की ओर कूदता है?
ब्रेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.