Linux 커널“11 분 모드”가 만들 수있는 가장 큰 하드웨어 시계 업데이트는 무엇입니까?


18

ntpdLinux 시스템에서 특정 시간 관련 프로그램 (예 :)이 실행중인 경우 커널은 소위 "11 분 모드"(설명서 hwclock페이지 참조)로 전환되어 11 분마다 시스템 시계에서 하드웨어 시계를 자동으로 업데이트합니다. .

SLES11에서 하드웨어 시계를 시스템 시계보다 10 시간 뒤 떨어진 것으로 설정하면 11 분 모드가 하드웨어 시계를 시스템 시계와 일치시킬 수없는 것으로 보입니다. 그러나 하드웨어 시계를 시스템 시계 5 분 뒤에 설정하면 11 분 모드가 완벽하게 일치합니다.

따라서 11 분 모드가 처리 할 수있는 최대 업데이트가 있으며 그것이 무엇인지 궁금합니다.


최신 정보:

이상하다 ...

더 많은 실험에 따르면 시스템 시계보다 약 20 분 뒤에 HW 시계가 있으면 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와 가상 환경은 서로 잘 어울리지 않습니다.
Scrivener

커널에서 11 분 모드에 대한 참조 정보와 해당 제한 사항을 찾을 수 없습니다. 그러나 ntpd는 시스템 시간과 ntp 서버 시간이 1000 초 내에 있는지 확인합니다. 그렇지 않으면 시스템 시간을 수정하지도 않습니다. 그것은 의도적으로 멀리 떨어져 있다고 생각합니다. 이 커널 모드가 ntpd가 아니라 제한하고 있는지 확인하는 방법을 생각할 수 있습니까?
JakePaulus

답변:


5

hwclockRHEL 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시스템 시간을 건드리지 않습니다. 그리고 그렇게 하면 "64"비트가 실제로 꺼져 있기 때문에 adjtimex --print11 분 모드가 켜져 있음을 확인합니다 .
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

사실 이것은 커널에서 11 분 모드와 관련이 없습니다. 이것은 ntpd의 기능과 관련이 있습니다.

소위 ntp의 위생 한계를 알고 있습니까? 시간이 너무 멀면 (예 : 10 시간) ntpd가 포기하고 시계를 기울이지 않습니다. 이 경우 ntpd 또는 ntpdate를 수동으로 실행해야합니다. Ntpd 옵션 -g은 그렇게해야합니다. 매뉴얼 페이지에서 정보를 확인하십시오.

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


1
이 머신 ntpd에서 이미 -g옵션 으로 실행 중입니다 .
QuantumMechanic

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.