นาฬิกาฮาร์ดแวร์ที่ใหญ่ที่สุดในการอัปเดตเคอร์เนล Linux คือ "โหมด 11 นาที" สามารถทำอะไรได้บ้าง


18

เมื่อโปรแกรมที่เกี่ยวข้องกับเวลา (เช่นntpd) กำลังทำงานบนระบบ Linux เคอร์เนลจะเปลี่ยนเป็นสิ่งที่เรียกว่า "โหมดสิบเอ็ดนาที" (ดูhwclockหน้าคน) โดยที่มันจะปรับปรุงนาฬิกาฮาร์ดแวร์จากนาฬิการะบบทุกสิบเอ็ดนาทีโดยอัตโนมัติ .

ใน SLES11 ฉันได้กำหนดเชิงประจักษ์แล้วว่าถ้าฉันตั้งค่านาฬิกาฮาร์ดแวร์ให้เป็นอะไรบางอย่างที่อยู่หลังนาฬิการะบบ 10 ชั่วโมงโหมด 11 นาทีดูเหมือนจะไม่สามารถทำให้นาฬิกาฮาร์ดแวร์ตรงกับนาฬิการะบบได้ แต่ถ้าฉันตั้งค่านาฬิกาฮาร์ดแวร์ 5 นาทีหลังนาฬิการะบบโหมด 11 นาทีจะเข้ากันได้อย่างสมบูรณ์แบบ

เห็นได้ชัดว่ามีการปรับปรุงสูงสุดที่โหมด 11 นาทีสามารถจัดการและฉันสงสัยว่ามันคืออะไร


ปรับปรุง:

นี่มันแปลก ...

อื่น ๆ ที่แสดงให้เห็นว่าการทดลองเมื่อฉันมีนาฬิกา HW รอบ 20 นาทีหลังนาฬิการะบบโหมด 11 นาทีจะตั้งค่านาฬิกา HW ที่จะว่า 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 หรือไม่ (ถ้าไม่ใช่ก็น่าจะเป็น - ฉันไม่คิดว่านี่เป็นสาเหตุของพฤติกรรมที่คุณพูดถึง แต่อาจทำให้เกิดความแปลกประหลาดอื่น ๆ ... )
voretaq7

คุณอยู่ในอินเดียหรือตั้งค่านาฬิกาของคุณเป็นเวลามาตรฐานของอินเดีย? ITS คือ GMT +05: 30 เพื่อให้สามารถชดเชยเวลา 30 นาทีได้ นอกจากนี้ (แต่ไม่น่าเป็นไปได้) เซิร์ฟเวอร์ ntp ที่กำหนดค่าไม่ดีในอินเดียอาจเป็นสาเหตุ
Justin Dearing

Nope ฉันอยู่ที่ US / Eastern และเซิร์ฟเวอร์ NTP อยู่ในสำนักงานของเราและยังเป็น US / Eastern
QuantumMechanic

นี่เป็น VPS หรือไม่ NTP และสภาพแวดล้อมเสมือนจริงเล่นได้ไม่ดีนัก
Scrivener

ฉันไม่พบข้อมูลอ้างอิงใด ๆ ในโหมด 11 นาทีในเคอร์เนลและข้อ จำกัด ที่อาจมี อย่างไรก็ตาม ntpd ตรวจสอบว่าเวลาของระบบและเวลาของเซิร์ฟเวอร์ ntp อยู่ภายใน 1,000 วินาที มิฉะนั้นจะไม่พยายามแก้ไขเวลาของระบบ มันคิดว่ามันอาจจะไกลเกินความมุ่งหมาย คุณลองนึกถึงวิธีการตรวจสอบว่าโหมดเคอร์เนลนี้ จำกัด คุณมากกว่า ntpd หรือไม่?
JakePaulus

คำตอบ:


5

จากhwclockหน้าคนใน RHEL 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นั้นยืนยันว่าโหมด 11 นาทีเปิดตั้งแต่เปิด "64" บิตแน่นอน
QuantumMechanic

"ถ้าบิต" 64 "ของจำนวนนี้ (แสดงเป็นไบนารี) เท่ากับ 0, โหมด 11 นาทีจะเปิด" - หมายความว่าหากสถานะเป็นคี่แล้วโหมด 11 นาทีปิด (สมมติว่าสถานะเป็น 64- บิตและลำดับบิตใหญ่ endian) -
jfs

หากบิต "64" ของตัวเลขนี้ (แสดงเป็นไบนารี) เท่ากับ 0 ---> ฉันเห็นสิ่งนี้ว่าหมายถึงบิตที่ 7 หรือif((status & (1<<6)) == 0)โหมด 11 นาทีเปิดอยู่
BMiner

มีการใช้งานโหมด 11 นาที: lxr.free-electrons.com/source/kernel/time/ntp.c?v=4.4#L509 sync_cmos_clockฟังก์ชั่น
osgx

4

อันที่จริงสิ่งนี้ไม่เกี่ยวกับโหมดสิบเอ็ดนาทีในเคอร์เนล สิ่งนี้เกี่ยวข้องกับคุณลักษณะใน ntpd

คุณตระหนักถึงขีด จำกัด ด้านสติปัญญาของ ntp หรือไม่ ถ้าเวลาอยู่ไกลเกินไป (เช่น 10 ชั่วโมง) ntpd ยอมแพ้และไม่เอียงนาฬิกา ในกรณีเหล่านั้นควรเรียกใช้ ntpd หรือ ntpdate ด้วยตนเอง ตัวเลือก Ntpd ของ-gควรทำเช่นนั้น ตรวจสอบข้อมูลจาก man page:

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


1
ในเครื่องntpdนี้มีการเรียกใช้-gตัวเลือก
QuantumMechanic

0

เคอร์เนลจะไม่ซิงค์เวลาถ้าปิดมากกว่า 60 นาทีเมื่ออยู่ในโหมด Eleven นาที นี่เป็นปัญหาที่พบบ่อยใน SUSE Enterprise ดูบทความนี้จาก Open SUSE สำหรับรายละเอียดเพิ่มเติม: https://lists.opensuse.org/opensuse-bugs/2011-06/msg01348.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.