लिनक्स कर्नेल "11-मिनट मोड" बनाने वाली सबसे बड़ी हार्डवेयर घड़ी अपडेट क्या है?


18

जब कुछ समय-संबंधित कार्यक्रम (जैसे ntpd) लिनक्स सिस्टम पर चल रहे होते हैं, तो कर्नेल तथाकथित "ग्यारह मिनट मोड" ( hwclockमैन पेज देखें ) पर स्विच हो जाएगा, जिससे यह सिस्टम घड़ी से हर ग्यारह मिनट में स्वचालित रूप से हार्डवेयर घड़ी को अपडेट कर देगा। ।

SLES11 पर मैंने आनुभविक रूप से यह निर्धारित किया है कि यदि मैं सिस्टम क्लॉक के 10 घंटे पहले हार्डवेयर क्लॉक को कुछ घंटे के लिए सेट करता हूं, तो 11 मिनट मोड हार्डवेयर क्लॉक को सिस्टम क्लॉक से मिलान करने में असमर्थ लगता है। लेकिन अगर मैं सिस्टम क्लॉक से 5 मिनट पहले हार्डवेयर क्लॉक सेट करता हूं, तो 11 मिनट का मोड एक परफेक्ट मैच बनाता है।

तो जाहिर है कि कुछ अधिकतम अपडेट हैं जो 11 मिनट का मोड संभाल सकते हैं और मैं सोच रहा हूं कि यह क्या है।


अपडेट करें:

ये अजीब है ...

अधिक प्रयोग से पता चलता है कि जब मेरे पास सिस्टम घड़ी के पीछे 20 मिनट के आसपास एचडब्ल्यू घड़ी है, तो 11 मिनट की मोड एचडब्ल्यू घड़ी को सिस्टम घड़ी (!) के ठीक 30 मिनट पीछे सेट करेगी।

# date
Tue Dec  6 10:16:52 EST 2011
# hwclock --set --date "12/6/11 09:56"
#
# date
Tue Dec  6 10:17:16 EST 2011
# hwclock --show
Tue Dec  6 09:56:06 2011  -0.156551 seconds
#
# date
Tue Dec  6 10:23:09 EST 2011
# hwclock --show
Tue Dec  6 10:01:58 2011  -0.535772 seconds
#
# date
Tue Dec  6 10:34:28 EST 2011
# hwclock --show
Tue Dec  6 10:04:27 2011  -0.192025 seconds

अपडेट करें:

मैं इस पार भाग गया: https://bugs.archlinux.org/task/27408 जो यह कहता है कि अच्छे या बुरे के लिए कर्नेल हार्डवेयर घड़ी को अपडेट नहीं करेगा, जब हार्डवेयर क्लॉक का समय सिस्टम क्लॉक टाइम से बहुत दूर है।


मुझे नहीं पता कि यह क्या कारण हो सकता है, लेकिन मैं मानक घड़ी सवाल पूछूंगा: क्या आपका हार्डवेयर घड़ी UTC के लिए सेट है? (यदि ऐसा नहीं है तो शायद होना चाहिए - मुझे नहीं लगता कि यह व्यवहार आपके द्वारा
उल्लिखित

क्या आप भारत में हैं या भारतीय मानक समय के लिए अपनी घड़ी सेट कर रहे हैं? ITS GMT +05: 30 है ताकि 30 मिनट की भरपाई हो सके। इसके अलावा (लेकिन संभावना नहीं), भारत में एक बुरी तरह से कॉन्फ़िगर किया गया ntp सर्वर इसका कारण हो सकता है।
जस्टिन डिअरिंग

नहीं। मैं यूएस / ईस्टर्न में हूं और एनटीपी सर्वर हमारे ऑफिस में है और यूएस / ईस्टर्न भी है।
क्वांटमचैनीक

क्या यह VPS पर है? एनटीपी और आभासी वातावरण एक साथ अच्छा नहीं खेलते हैं।
स्क्रिपर

मैं कर्नेल में 11-मिनट मोड पर कोई संदर्भ जानकारी नहीं पा सका और इसकी क्या सीमाएँ हो सकती हैं। हालाँकि, ntpd यह जाँचता है कि सिस्टम का समय और ntp सर्वर का समय 1000 सेकंड के भीतर है। यदि नहीं, तो यह सिस्टम समय को ठीक करने का प्रयास भी नहीं करेगा। यह सोचता है कि यह उद्देश्य पर दूर हो सकता है। क्या आप यह सत्यापित करने का कोई तरीका सोच सकते हैं कि यह कर्नेल मोड आपको ntpd के बजाय सीमित कर रहा है?
जेकपूलस

जवाबों:


5

hwclockRHEL 4.6 पर मैन पेज से :

This mode (we'll call it "11 minute mode") is off until something turns it on.  The ntp
daemon  xntpd  is  one thing  that  turns  it on.  You can turn it off by running
anything, including hwclock --hctosys, that sets the System Time the old fashioned way.

To see if it is on or off, use the command adjtimex --print and look at the value of
"status".  If the "64" bit of this number (expressed in binary) equal to 0, 11 minute mode 
is on.  Otherwise, it is off.

तो आपके द्वारा चलाए जा रहे गुणों के कारण आपने hwclock --setइसे बंद कर दिया है। उसी टोकन से आप adjtimex --printपुष्टि करने के लिए आउटपुट को चेक कर सकते हैं।


क्या यह बंद हो जाता है कुछ है जो सिस्टम समय निर्धारित करता हैhwclock --setसिस्टम समय को नहीं छूता है। और जब मैं ऐसा adjtimex --printकरता हूं तो "64" बिट के बंद होने के बाद से उस 11-मिनट मोड की पुष्टि होती है।
क्वांटमचेनिक

"यदि इस संख्या का" 64 "बिट (बाइनरी में व्यक्त किया गया है) 0, 11 मिनट मोड के बराबर है।" - क्या इसका मतलब यह है कि यदि स्थिति विषम है तो 11 मिनट मोड बंद है (मान लें कि स्थिति 64-बिट और बिग-एंडियन बिट ऑर्डर है)?
JFS

यदि इस संख्या का "64" बिट (बाइनरी में व्यक्त) 0 के बराबर है ---> मैं इसे 7 वें बिट के रूप में देखता हूं, या if((status & (1<<6)) == 0)फिर 11 मिनट मोड चालू है।
बीएमनर

11 मिनट के मोड का कार्यान्वयन है: lxr.free-electrons.com/source/kernel/time/ntp.c?v=4.4#L509 sync_cmos_clock फ़ंक्शन
ऑर्गेक्स

4

वास्तव में यह कर्नेल में ग्यारह-मिनट-मोड के साथ कुछ नहीं करना है। यह ntpd में एक फीचर से संबंधित है।

क्या आप ntp की तथाकथित पवित्रता सीमा से अवगत हैं? यदि समय बहुत दूर है (उदाहरण के लिए 10 घंटे) ntpd देता है और घड़ी को तिरछा नहीं करता है। उन मामलों में, ntpd या ntpdate को मैन्युअल रूप से चलाया जाना चाहिए। Ntpd के विकल्प -gको ऐसा करना चाहिए। आदमी पृष्ठ से जानकारी की जाँच करें:

http://doc.ntp.org/4.1.0/ntpd.htm


1
इस मशीन ntpdपर पहले से ही -gविकल्प के साथ चलाया जा रहा है।
क्वांटमचैनिक

0

ग्यारह मिनट मोड में होने पर कर्नेल 60 मिनट से अधिक बंद होने पर समय को सिंक नहीं करेगा। SUSE Enterprise में यह एक आम समस्या है, कुछ और विवरणों के लिए Open SUSE के इस लेख को देखें: https://lists.opensuse.org/opensuse-bugs/2011-06/msg01348.html

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