잘못된 프로세서 주파수를 감지하는 Linux 커널


15

6.0.8 데비안 서버 (HP ProLiant)를 콜드 부팅 한 후 ntpd시스템 시간이 제한적으로 증가했습니다. 일반적이고 안정적인 기준 시간 서버에 대한 오프셋 및 지터는 제한없이 커졌습니다. (동일한 트윈 서버에는 전혀 문제가 없었습니다.) ntpd측면 에서 문제를 해결하려는 많은 시도가 실패한 후 재부팅을 시도하기로 결정했으며 모든 것이 정상이었습니다.

문제를 조사하기 위해이 불일치를 발견하여 시계 문제를 설명 할 수 있습니다.

root@n1:~# zgrep Detected /var/log/dmesg*
/var/log/dmesg:[    0.004000] Detected 2400.110 MHz processor.
/var/log/dmesg.0:[    0.004000] Detected 2383.579 MHz processor.
/var/log/dmesg.1.gz:[    0.004000] Detected 2400.036 MHz processor.
/var/log/dmesg.2.gz:[    0.004000] Detected 2400.298 MHz processor.
/var/log/dmesg.3.gz:[    0.004000] Detected 2400.165 MHz processor.
/var/log/dmesg.4.gz:[    0.004000] Detected 2400.410 MHz processor.

마지막 두 번째 부팅 (문제가있는 부팅)에서 감지 된 CPU 주파수는 명확한 이상치입니다. 특이 치가 없으면 공칭 주파수에 대한 검출 주파수의 오차 및 표준 편차는 +0.15 MHz ± 0.25 MHz입니다. 문제가있는 부팅의 경우 -16.4Mhz의 오류가 발생하여 예상보다 약 100 배 큽니다.

내 질문 :

  1. 이 유형의 오류가 ntp시간 규율을 불안정하게하거나 사용할 수 없게 만들 수 있습니까? 이것이 내 시계 문제의 이유입니까?

  2. 이 유형의 동작이 하드웨어 하드웨어의 증상입니까? 서버가 HW 유지 보수에 들어가야합니까?

최신 정보

유용한 데이터 :

  • 커널은 2.6.32-5-amd64입니다 (Debian 2.6.32-48squeeze4)
  • current_clocksource 이다 tsc
  • 에 대한 오류 lpj는 물론 CPU 주파수 오류와 일치합니다.

위의 일부 컨텍스트 라인 grep

[    0.000000] hpet clockevent registered
[    0.000000] Fast TSC calibration using PIT
[    0.004000] Detected 2400.110 MHz processor.
[    0.000008] Calibrating delay loop (skipped), value calculated using timer frequency.. 4800.22 BogoMIPS (lpj=9600440)

답변:


5

문제가 잘못 식별 된 타임 스탬프 카운터 (TSC) 주파수 라는 것을 스스로 확신했습니다 .

커널은 PIT ( Programmable Interval Timer) 에 대해 TSC를 교정하고있는 것 같습니다 . 일반적으로 식별 된 CPU 주파수는 2400.204 ± 0.134 MHz이며 이는 약 56 ppm 정확도에 해당합니다. 문제가있는 부팅 후 CPU 주파수는 2383.579MHz로 추정되었으며, 이는 약 6900ppm의 오류에 해당 ntpd하며 보상 할 수 없었습니다. 실제로 기능하는 첫 10h30m 동안 시스템 클럭은 약 4m30s (약 7000ppm)를 얻었습니다.

TSC 주파수의 오류가 시스템 클럭의 드리프트에 해당하기 때문에 잘못된 클럭 동작이 잘못된 TSC 보정으로 인해 발생한 것으로 결론을 내릴 수 있습니다.

그러나 나는 그렇게 큰 문제를 보지 못했습니다.이 잘못된 교정의 가능한 원인 (hw, sw?)에 대해 여전히 궁금합니다.


3

이 유형의 동작은 비정형입니다. ntp.drift파일 값을 모니터링 하여 동작이 표시 될 때 중요한 변경 사항이 발생했는지 확인하는 것이 좋습니다 . 계속해서 크게 바뀌면 NTP는 문제를 왜곡하려고했습니다. 이 경우 커널이 시작시 실제 클럭 주파수를 잘못 식별했거나 잘못된 부팅 부분에 대해 클럭 자체가 느리다는 신호입니다. 불행히도이 이벤트는 하드웨어 문제를 나타내는 신호가 아닙니다.

다시 발생하면 해당 ntp.drift 파일을보십시오.


문제가있는 부팅 후 ntpd는 안정적인 PLL에 도달 ntpdc -c loopinfo하지 않았 으므로 주파수 드리프트 값을 얻지 못했습니다. 재부팅 후 모든 것이 정상으로 나타납니다. 드리프트 값이 안정적입니다 ... BTW 당신의 제안이 맞습니다 log/loopstats. 비정상적인 행동을 모니터링 하고 있습니다.
Stefano M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.