Jądro Linux wykrywa nieprawidłową częstotliwość procesora


15

Po zimnym rozruchu serwera Debian 6.0.8 (HP ProLiant), ntpd grała spustoszenie z czasem systemowym: przesunięciem i fluktuacją w stosunku do zwykłych i niezawodnych serwerów czasu odniesienia rosnących bez ograniczeń. (Zauważ, że bliźniaczy identyczny serwer w ogóle nie miał problemu.) Po wielu nieudanych próbach rozwiązania problemu po ntpdstronie postanowiłem spróbować ponownie uruchomić komputer i wszystko poszło dobrze.

W celu zbadania problemu znalazłem tę rozbieżność, która mogłaby wyjaśnić moje problemy z zegarem:

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.

Zauważ, że w drugim ostatnim rozruchu (problematycznym) wykryta częstotliwość procesora jest wyraźną wartością odstającą. Bez wartości odstającej błąd i odchylenie standardowe wykrytej częstotliwości w stosunku do wartości nominalnej wynoszą +0,15 MHz ± 0,25 MHz. W przypadku problematycznego rozruchu mam błąd -16,4 MHz, który jest około 100 razy większy niż oczekiwano.

Moje pytania:

  1. Czy błąd tego typu może sprawić, że ntpdyscyplina czasowa będzie niestabilna / bezużyteczna? Czy to jest przyczyną moich problemów z zegarem?

  2. Czy tego typu zachowanie jest objawem niestabilnego sprzętu? Czy serwer powinien przejść do konserwacji?

Aktualizacja

Niektóre przydatne dane:

  • jądro to 2.6.32-5-amd64 (Debian 2.6.32-48squeeze4)
  • current_clocksource jest tsc
  • błąd dla lpjjest (oczywiście) zgodny z błędem na częstotliwości procesora

Niektóre linie kontekstu dla powyższego 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)

Odpowiedzi:


5

Przekonałem się, że problemem była błędnie zidentyfikowana częstotliwość licznika znaczników czasu (TSC).

Najwyraźniej jądro kalibruje TSC względem programowalnego timera interwałowego (PIT). Zazwyczaj zidentyfikowana częstotliwość procesora wynosi 2400,204 ± 0,134 MHz, co odpowiada około 56 ppm dokładności. Po problematycznym rozruchu częstotliwość procesora została oszacowana na 2383,579 MHz, co odpowiada błędowi około 6900 ppm, którego ntpdnie był w stanie zrekompensować. W rzeczywistości podczas pierwszych 10h 30m funkcjonowania zegar systemowy zyskał około 4m30s, czyli około 7000 ppm.

Ponieważ błąd w częstotliwości TSC odpowiada dryfowi w zegarze systemowym, doszłbym do wniosku, że nieprawidłowe zachowanie zegara było spowodowane nieprawidłową kalibracją TSC.

Jednak nigdy nie widziałem tak dużego problemu: wciąż zastanawiam się nad możliwymi przyczynami (hw, sw?) Tej błędnej kalibracji.


3

Ten typ zachowania jest nietypowy. Dobrym sprawdzeniem byłoby monitorowanie wartościntp.drift pliku, aby zobaczyć, czy nastąpiły znaczące zmiany, gdy pojawiało się zachowanie. Jeśli ciągle się zmieniał, NTP próbował wywrócić problem. Jeśli tak było, jest to znak, że jądro błędnie zidentyfikowało prawdziwą częstotliwość zegara podczas uruchamiania lub sam zegar był wolny dla niewłaściwych części rozruchu. Niestety to jedno zdarzenie nie jest wyraźnym sygnałem problemów sprzętowych.

Jeśli to się powtórzy, obejrzyj ten plik ntp.drift.


Po problematycznym rozruchu ntpd nigdy nie dotarł do stabilnego PLL, więc ntpdc -c loopinfonigdy nie podał mi wartości dryfu częstotliwości. Teraz po ponownym uruchomieniu wszystko wydaje się być w porządku, ze stabilną wartością dryfu ... BTW twoja sugestia jest poprawna, monitoruję log/loopstatsnieprawidłowe zachowanie.
Stefano M,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.