当某些与时间相关的程序(如ntpd
)在 Linux 系统上运行时,内核将切换到所谓的“十一分钟模式”(参见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这确实意味着,无论好坏,当硬件时钟时间与系统时钟时间相差太远时,内核都不会更新硬件时钟。
答案1
来自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
进行确认。
答案2
其实这个跟内核的十一分钟模式没关系,是跟ntpd的一个功能有关。
您是否知道 ntp 所谓的健全性限制?如果时间相差太远(例如 10 小时),ntpd 会放弃并且不会扭曲时钟。在这些情况下,应手动运行 ntpd 或 ntpdate。ntpd 选项应该可以-g
做到这一点。检查手册页中的信息:
答案3
如果在十一分钟模式下时间偏差超过 60 分钟,内核将不会同步时间。这是 SUSE Enterprise 中的一个常见问题,请参阅 Open SUSE 的这篇文章了解更多详细信息: https://lists.opensuse.org/opensuse-bugs/2011-06/msg01348.html