클럭 드리프트를 측정하고 방지하려면 어떻게해야합니까? 점프) 하루에 약 50 번 발생합니다.

여러 프로덕션 플랫폼에서 시간 시계가 주기적으로 앞뒤로 점프하는 것으로 보이는 증상이 관찰되었습니다. 점프는 일반적으로 약 1 초이며, 일반적으로 취소되고 (이후 매우 짧은 후 뒤로 점프) 하루에 약 50 번 발생합니다. 이 드리프트는 최대 애플리케이션 사용 시간과 일일 백업과 같은 디스크 I / O 작업이 많은 시간 동안 가장 두드러집니다. 이러한 드리프트는 소프트 실시간 민감 애플리케이션에 영향을 미칩니다.

시스템은 3.0.58-0.6.6 기본 커널을 사용하여 SLES 11SP2를 실행하는 Oracle Netra X4250 및 Netra X4270 서버입니다.

$ cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm

$ cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

NTP 를 비활성화 했지만 드리프트에는 영향을 미치지 않습니다. 시각 시계 드리프트 시간을 측정하는 도구가 있습니까? 우리는 이것을 어떻게 피할 수 있습니까?

이들은 생산 플랫폼이므로 실험실에서 문제를 재현 할 수 없으므로 실험 능력이 제한됩니다. 내 장치에 남겨두면 드리프트를 측정하는 도구를 작성하고 HPET 클럭 소스를 실험 해 볼 수 있습니다.



답변

시각 시계 드리프트 시간을 측정하는 도구가 있습니까?

내가 아는 유일한 도구는 NTP 도구로 충분합니다. 주어진 클럭 소스와 동기화하도록 ntpd를 실제로 구성 할 필요는 없습니다. -d옵션을 사용 ntpdate하여 계산 된 오프셋을 가져올 수 있습니다 .

예:

[davisja5@xxxadmvlm08 ~]$ ntpdate -d clock.redhat.com 2>/dev/null | egrep "^offset"
offset -0.004545
[davisja5@xxxadmvlm08 ~]$

-d NTP가 실제로 시스템 시계를 건드리지 않고 작동하는 디버그 옵션입니다.

이를 피할 수있는 방법에 대한 조언이 있습니까?

하드웨어 시계 때문일 수 있기 때문에 개발자 / 테스트 환경에서이 기능을 재현 할 수 없다고해도 놀라지 않습니다. 다른 사람과 하드웨어를 지원한다면 기계 수리를 받으려고합니다. 한 가지 가능성은이 생산 기계에 대한 개발 기계 중 하나를 교환하여 이전 PROD 시스템을 수정하고이를 현재 PROD에있는 기계를 대체하기 위해 개발 기계로 다시 도입하는 것입니다.

부족한 점은 하드웨어 클럭 소스를 전환하는 것만으로도 가능합니다. 스왑 작업을 수행 할 수 없거나 수행 할 수없는 경우 hpet 경로로 이동하는 것이 좋습니다 . 클럭 소스 변경이 시스템 서비스와 엉망인지 테스트 한 다음 프로덕션에 우박으로 배포 할 수 있습니다.


답변

한 가지 해결책은 HPET

참고 고성능 이벤트 타이머

부팅 파라미터로 설정하려면

clocksource=hpet

구형 하드웨어에서는 TSC종종 불안정하고 커널에 의해 비활성화되었습니다.

멀티 코어 / 하이퍼 스레드 CPU, 여러 CPU가있는 시스템 및 최대 절전 운영 체제가 등장하면서 TSC는 정확한 결과를 제공 할 수 없습니다.

Wikipedia : 타임 스탬프 카운터


답변

나는 우리의 응용 프로그램에서 나타나는 대기 시간 증상과 클록 측정을 연관시키는 더 자세한 도구를 작성했습니다. 이 도구는 이전에 Linux 시간 시계에서 지터로 의심되는 것을 배제하는 것으로 보입니다.

짧은 이야기로, 초기 가설은 유효하지 않습니다. 그러나 답변과 링크에서 Linux 시계에 대해 많은 것을 배웠으므로 모든 응답자에게 감사드립니다!


답변

누군가가 시계를 바꾸지 않는 한 시계는 단조로운가요? 뒤로 점프 할 수 없습니다. cron 작업 또는 다른 데몬 (예 :에 대한 호출 hwclock --adjust)과 같이 시계를 설정하는 것이 있어야합니다 . 나는 ntp 자체가 드리프트에 대한 통계를 업데이트하고 정기적으로 그것을 보상한다는 것을 기억하며, 오랫동안 ntp를 실행하지 못하고 큰 오프셋을 얻지 않으면 재설정하지 않으면 며칠 동안 시간이 엉망이됩니다 /etc/adjtime. 시간 드리프트를 주기적으로 재조정하고 점프하는 것과 같은 설정이있을 수 있습니다.

ntp 실제로이 문제에 대응하기위한 것입니다.


답변