Ilekroć widzę uruchamianie Linuksa, widzę ten komunikat:
clocksource tsc unstable (delta = NNNNNNNN ns)
gdzie NNNNNNNN jest bardzo dużą liczbą, która może być dodatnia lub ujemna.
Co oznacza ta wiadomość? Czy powinienem się tym martwić?
Ilekroć widzę uruchamianie Linuksa, widzę ten komunikat:
clocksource tsc unstable (delta = NNNNNNNN ns)
gdzie NNNNNNNN jest bardzo dużą liczbą, która może być dodatnia lub ujemna.
Co oznacza ta wiadomość? Czy powinienem się tym martwić?
Odpowiedzi:
Szczerze widzę tę wiadomość dzisiaj i nie mam pojęcia, co to właściwie znaczy.
Biorąc to pod uwagę, przeczytałem artykuł w Wikipedii na temat licznika znaczników czasu (co oznacza tsc
komunikat o błędzie). Artykuł wspomina o problemie z TSC w drugim akapicie:
Licznik znaczników czasu był do niedawna doskonałym sposobem na uzyskanie informacji o taktowaniu procesora o wysokiej rozdzielczości i niskim koszcie. Wraz z pojawieniem się procesorów wielordzeniowych / wielowątkowych, systemów z wieloma procesorami i „hibernujących” systemów operacyjnych, nie można polegać na TSC w celu zapewnienia dokładnych wyników- chyba że dołożymy wszelkich starań, aby skorygować możliwe wady: wskaźnik tyknięcia i czy wszystkie rdzenie (procesory) mają identyczne wartości w swoich rejestrach czasowych. Nie ma obietnicy, że liczniki czasu wielu procesorów na jednej płycie głównej zostaną zsynchronizowane. W takich przypadkach programiści mogą uzyskać wiarygodne wyniki tylko poprzez zablokowanie swojego kodu na jednym procesorze. Nawet wtedy szybkość procesora może się zmienić z powodu środków oszczędzania energii podjętych przez system operacyjny lub BIOS lub system może zostać hibernowany, a następnie wznowiony (reset licznika znacznika czasu). W tych ostatnich przypadkach, aby zachować aktualność, licznik musi być okresowo ponownie kalibrowany (zgodnie z rozdzielczością czasową wymaganą przez aplikację).
Krótko mówiąc, w nowoczesnych systemach TSC wymaga dokładnego pomiaru czasu . I to właśnie mówi wam wiadomość. W twoim systemie TSC nie jest stabilnym źródłem czasu.
delta
Zauważyć, że zakładam, jest raportowany czas delta pomiędzy dwoma kleszczami z TSC. Oznacza to, że za każdym razem, gdy TSC się zlicza 1
, NNNNNNNNN
miną sekundy. W ten sposób zazwyczaj możesz zachować bardzo dokładny czas.
Jądro Linuksa sprawdzi tę częstotliwość wiele razy (aby ustalić, czy źródło jest stabilne) i uzyskało inne wyniki. Tak więc wiadomość.
Więc musisz się martwić?
Naprawdę nie wiem. Według mnie problem ten wynika z procesów „przenoszonych” między rdzeniami (każdy rdzeń może mieć inną częstotliwość TSC) lub rdzenia zmieniającego częstotliwość rdzenia (jak w przypadku oszczędzania energii).
Najprawdopodobniej komunikat jest drukowany tylko dlatego, że jądro samodzielnie wykryło ten problem i teraz odpowiednio się dostosuje.
Z tego, co przeczytałem w źródłach jądra ( arch/x86/kernel/tsc.c
), nie sądzę, że jestem zbyt daleko od swoich założeń.
Wątpię, czy wiadomość oznacza stan krytyczny. I opieram to na założeniu, że do tej pory wiedziałbyś, że to było krytyczne.
tsc
odnosi się do licznika znaczników czasu . Jeśli to pomoże.