Яке найбільше оновлення апаратного годинника може зробити ядро ​​Linux «11-хвилинний режим»?


18

Коли певні програми, пов’язані з часом (наприклад ntpd) працюють у системі Linux, ядро ​​перейде в так званий "одинадцять хвилинний режим" (див. hwclockСторінку "man"), завдяки чому воно автоматично оновлюватиме апаратний годинник із системного годинника кожні одинадцять хвилин .

На 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

Ні. Я в США / Схід, і NTP-сервер знаходиться в нашому офісі, а також США / Східний.
QuantumMechanic

Це на VPS? NTP і віртуальне середовище не грають добре разом.
Сценарист

Я не зміг знайти жодної довідкової інформації про 11-хвилинний режим у ядрі та які обмеження у нього можуть бути. Однак, ntpd перевіряє, що системний час і час сервера ntp знаходяться в межах 1000 секунд. Якщо ні, то він навіть не спробує виправити системний час. Думає, що це може бути настільки далеко задумано. Чи можете ви придумати якийсь спосіб перевірити, що цей режим ядра обмежує вас, а не 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-бітовий і біт-ендіанський порядок)?
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має робити це. Перевірте інформацію зі сторінки чоловіка:

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


1
На цій машині ntpdвже запущена -gопція.
QuantumMechanic

0

Ядро не синхронізує час, якщо він вимкнений більше 60 хвилин, коли він знаходиться в режимі одинадцяти хвилин. Це поширена проблема в SUSE Enterprise, детальну інформацію див. У цій статті від Open SUSE: https://lists.opensuse.org/opensuse-bugs/2011-06/msg01348.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.