Atmel xPlained SAMA5D3 SBC의 sdcard에서 데비안 Jessie를 실행 중입니다. 시리얼 라인을 통해 다른 장치를 샘플링하는 파이썬 프로그램이 있습니다. 이 장치는 꽤 안정적인 20 초 카운트 다운 시계를 가지고 있습니다. 나는 계산 된 사이클 시간이 꽤 많이 돌아 다니는 것을 발견했다.
이것은 systemd-timesyncd가 32 초마다 0.5s-1.0s로 클럭을 조정하고 있음을 알게되었습니다. 틱 마크를 조정하는 것처럼 보이지는 않지만 오프셋을 유지합니다. 그것이 너무나 많기 때문에, 결코 뒤로 물러나지 않고 매 32 초마다 그것을 계속합니다. 나는 완전한 ntp 패키지와 openntpd가 비슷하게 작동한다는 것을 발견했다.
그래서 나는 systemd-timesyncd를 해제했다. 그리고 그 시점에서 나는 분당 약 1.5 초를 꾸준히 잃고 있다는 것을 알게되었습니다.
이로 인해 ntpdate와 adjtimex가 설치되었습니다. 나는 10 분마다 ntpdate를 한 결과를 파일에 기록한 cron 작업을 작성했습니다. 방정식을 사용함으로써
tickAdjust = ntpAdjustmentMilliseconds / 10minutes
adjtimex -t를 사용하여 틱 값을 조정할 수 있습니다. 10158 값으로 10 분 업데이트가 매우 작아 져서 0의 양쪽에 위치합니다.
그래서 지금 내 질문은 무엇을해야할까요? 나는 리눅스와 시간에 대해 조금 배웠지 만, 지금은 더 많은 질문이있는 것 같다. 그 값이 10158인지 아니면 받아 들일 수 있을지 모르겠다. 필자는 로그를 분석하는 파이썬 프로그램을 직접 작성해야 하는가? 왜 처음에는 너무 격렬하게 왜곡되어 systemd-timesyncd가 조정할 수 없습니까? 커널이 올바른 클럭 소스를 가리키고 있습니까? 사용자 가이드에는 프로세서 클럭이 두 개 있지만 다음과 같이 3 개가 나와 있습니다.
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
> tcb_clksrc pit jiffies
그들은 어떻게 관련이 있는가? 나는 클럭 소스를 변경하면서 연주했으나 아무 것도 변경하지 못했다. 이유는 무엇입니까? 시스템 클록과 하드웨어 클록은 어디에서 모두 있습니까? rtc 하드웨어가 전혀 사용되지 않습니까?
나는 "ntpdate"와 "adjtimex"를 사용하여 "자기 자신을 굴리는"것을 두려워하지 않는다. 그러나 나는 정말로 안정된 시간이 실제로 성취되기로되어 있다는 것을 잘 이해하지 못한다고 느낀다.