Linux内核“ 11分钟模式”可以进行的最大硬件时钟更新是什么?


18

当某些与时间相关的程序(例如ntpd)在Linux系统上运行时,内核将切换到所谓的“十一分钟模式”(请参见hwclock手册页),从而它将每隔十一分钟自动从系统时钟中更新硬件时钟。 。

在SLES11上,我凭经验确定,如果将硬件时钟设置为比系统时钟晚10小时,则11分钟模式似乎无法使硬件时钟与系统时钟匹配。但是,如果我将硬件时钟设置为比系统时钟晚5分钟,则11分钟模式将是完美的选择。

因此,显然有一个11分钟模式可以处理的最大更新,我想知道这是什么。


更新:

真奇怪

更多的试验表明,当我身边有系统时钟落后20分钟HW时钟的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?(如果不是这样的话,我认为这不是您提到的行为,但可能会引起其他陌生感……)
voretaq7 2011年

您是在印度还是将时钟设置为印度标准时间?ITS是格林尼治标准时间+05:30,因此可能需要30分钟的时间。同样(但不太可能),可能是印度配置错误的ntp服务器造成的。
贾斯汀·迪林Dearing

不。我在美国/东部地区,并且NTP服务器在我们的办公室中,并且也在美国/东部地区。
QuantumMechanic 2011年

这是在VPS上吗?NTP和虚拟环境不能很好地配合使用。
Scrivener 2012年

我在内核中找不到有关11分钟模式的任何参考信息,以及它可能有哪些限制。但是,ntpd会检查系统时间和ntp服务器时间是否在1000秒以内。如果没有,它甚至不会尝试更正系统时间。它认为可能离目标很远。您能想到某种方法来验证此内核模式是否在限制您而不是ntpd?
JakePaulus 2012年

Answers:


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,确认“ 64”位确实处于关闭状态,因此11分钟模式处于开启状态。
QuantumMechanic 2012年

“如果此数字的“ 64”位(以二进制表示)等于0,则将打开11分钟模式。-这是否意味着如果状态为奇数,则11分钟模式关闭(假设状态为64位且使用大端顺序)?
jfs 2015年

如果此数字的“ 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应该做到这一点。从手册页检查信息:

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


1
在该机器ntpd上,该-g选件已经在运行。
QuantumMechanic 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.