Когда определенные связанные со временем программы (например 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, который подразумевает, что ядро не будет обновлять аппаратные часы, если время аппаратных часов слишком далеко от времени системных часов.
Ответы:
Со
hwclock
страницы руководства на RHEL 4.6:Таким образом, благодаря тому, что вы бежите,
hwclock --set
вы, вероятно, отключили его. По тому же признаку вы можете проверить выходные данныеadjtimex --print
для подтверждения.источник
hwclock --set
не касается системного времени. И когда я это делаю,adjtimex --print
это подтверждает, что 11-минутный режим включен, поскольку бит «64» действительно выключен.if((status & (1<<6)) == 0)
тогда включается 11-минутный режим.sync_cmos_clock
функцииНа самом деле это не имеет ничего общего с одиннадцатиминутным режимом в ядре. Это связано с функцией в ntpd.
Знаете ли вы о так называемом здравом рассудке ntp? Если время слишком далеко (например, 10 часов), ntpd сдается и не искажает часы. В этих случаях ntpd или ntpdate следует запускать вручную. Параметр Ntpd
-g
должен сделать это. Проверьте информацию со страницы руководства:http://doc.ntp.org/4.1.0/ntpd.htm
источник
ntpd
уже запускается-g
опция.Ядро не будет синхронизировать время, если оно отключено более чем на 60 минут в режиме одиннадцати минут. Это распространенная проблема в SUSE Enterprise. Дополнительную информацию смотрите в этой статье Open SUSE: https://lists.opensuse.org/opensuse-bugs/2011-06/msg01348.html.
источник