Apa yang dimaksud dengan pembaruan perangkat keras jam terbesar yang dapat dilakukan oleh kernel Linux “mode 11 menit”?

18

Ketika program terkait waktu tertentu (seperti ntpd) berjalan pada sistem Linux, kernel akan beralih ke apa yang disebut "mode sebelas menit" (lihat hwclockhalaman manual) di mana ia akan secara otomatis memperbarui jam perangkat keras dari jam sistem setiap sebelas menit .

Pada SLES11 saya secara empiris menentukan bahwa jika saya mengatur jam perangkat keras menjadi sekitar 10 jam di belakang jam sistem, mode 11 menit sepertinya tidak mampu membuat jam perangkat keras cocok dengan jam sistem. Tetapi jika saya mengatur jam perangkat keras 5 menit di belakang jam sistem, mode 11 menit cocok dengan sempurna.

Jadi ternyata ada beberapa pembaruan maksimum yang dapat ditangani oleh mode 11 menit dan saya ingin tahu apa itu.


Memperbarui:

Ini aneh ...

Eksperimen lebih lanjut menunjukkan bahwa ketika saya memiliki jam HW sekitar 20 menit di belakang jam sistem, mode 11 menit akan mengatur jam HW menjadi tepat 30 menit di belakang jam sistem (!):

# 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

Memperbarui:

Saya berlari melintasi ini: https://bugs.archlinux.org/task/27408 yang tidak menyiratkan bahwa baik atau buruk kernel tidak akan memperbarui jam perangkat keras ketika waktu jam perangkat keras terlalu jauh dari waktu jam sistem.

Mekanika Kuantum
sumber
Saya tidak tahu apa yang menyebabkan ini, tetapi saya akan menanyakan pertanyaan jam standar: Apakah jam perangkat keras Anda diatur ke UTC? (Jika tidak, mungkin seharusnya - saya tidak berpikir ini bertanggung jawab atas perilaku yang Anda sebutkan, tetapi itu dapat menyebabkan keanehan lainnya ...)
voretaq7
Apakah Anda di India atau menyetel jam Anda ke Waktu Standar India? ITS adalah GMT +05: 30 sehingga mungkin diperhitungkan untuk offset 30 menit. Juga (tetapi tidak mungkin), server ntp yang dikonfigurasi dengan buruk di India mungkin menjadi penyebabnya.
Justin Dearing
Nggak. Saya di AS / Timur dan dan server NTP ada di kantor kami dan juga AS / Timur.
QuantumMechanic
Apakah ini pada VPS? NTP dan lingkungan virtual tidak bermain bersama dengan baik.
Ahli menulis
Saya tidak dapat menemukan informasi referensi tentang mode 11 menit di dalam kernel dan batasan apa yang dimilikinya. Namun, ntpd mengecek bahwa waktu sistem dan waktu server ntp berada dalam 1000 detik. Jika tidak, itu bahkan tidak akan mencoba untuk memperbaiki waktu sistem. Ia berpikir itu mungkin sejauh itu dengan sengaja. Bisakah Anda memikirkan beberapa cara untuk memverifikasi bahwa mode kernel ini membatasi Anda daripada ntpd?
JakePaulus

Jawaban:

5

Dari hwclockhalaman manual di 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.

Jadi berdasarkan kebaikan Anda berlari, hwclock --setAnda mungkin mematikannya. Dengan cara yang sama Anda dapat memeriksa output adjtimex --printuntuk konfirmasi.

Karlson
sumber
Apa yang mematikannya adalah sesuatu yang mengatur waktu sistem . hwclock --settidak menyentuh waktu sistem. Dan ketika saya melakukan adjtimex --printitu menegaskan bahwa modus 11-min di atas sejak "64" bit memang off.
QuantumMechanic
"Jika bit" 64 "dari angka ini (dinyatakan dalam biner) sama dengan 0, mode 11 menit aktif." - apakah ini berarti bahwa jika statusnya ganjil maka mode 11 menit dimatikan (dengan asumsi status 64-bit dan urutan bit besar-endian)?
jfs
Jika bit "64" dari angka ini (dinyatakan dalam biner) sama dengan 0 ---> Saya melihat ini berarti bit ke-7, atau if((status & (1<<6)) == 0)mode 11 menit aktif.
BMiner
Ada penerapan mode 11 menit: lxr.free-electrons.com/source/kernel/time/ntp.c?v=4.4#L509 sync_cmos_clock fungsi
osgx
4

Sebenarnya ini tidak ada hubungannya dengan mode sebelas menit di kernel. Ini terkait dengan fitur di ntpd.

Apakah Anda mengetahui batas kewarasan ntp? Jika waktunya terlalu jauh (misalnya 10 jam) ntpd menyerah dan tidak mengacaukan jam. Dalam kasus tersebut, ntpd atau ntpdate harus dijalankan secara manual. Opsi Ntpd dari -gharus melakukan itu. Periksa informasi dari halaman manual:

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

Zouppen
sumber
1
Pada mesin ntpdini sudah dijalankan dengan -gopsi.
QuantumMechanic