Was bedeutet "clocksource tsc unstable"?

10

Immer wenn ich sehe, dass Linux bootet, sehe ich folgende Meldung:

Taktquelle tsc instabil (Delta = NNNNNNNN ns)

wobei NNNNNNNN eine sehr große Zahl ist, die positiv oder negativ sein kann.

Was bedeutet diese Nachricht? Sollte ich mir darüber Sorgen machen?

bwDraco
quelle
Ich denke tscbezieht sich auf den Zeitstempelzähler . Wenn das hilft.
Der Hochstapler
Angesichts dessen, was ich online über diese Nachricht finde, wird diese Nachricht auch auf einer physischen oder einer virtuellen Maschine angezeigt. Scheint so relevant zu sein.
Der Hochstapler
Sowohl physisch als auch virtuell. Ich erhalte diese Meldung auf verschiedenen Systemen, wenn ich Linux auf ihnen starte.
bwDraco
Ich habe genau diese Meldung erhalten, /var/log/messageals Optionen (acpi = off "zu /etc/grub.conf(als kernel=Option) hinzugefügt wurden . Als ich es entfernte und neu startete, war die Nachricht verschwunden. CentOS 6 mit Kernel: .6.32-279.19.1.el6.x86_64

Antworten:

8

Ich sehe diese Nachricht heute zum ersten Mal ehrlich und habe keine Ahnung, was sie tatsächlich bedeutet.

Davon abgesehen habe ich den Wikipedia-Artikel über den Zeitstempelzähler gelesen (wofür tscdie Fehlermeldung steht). Der Artikel erwähnt im zweiten Absatz ein Problem mit dem TSC:

Der Zeitstempelzähler war bis vor kurzem eine hervorragende Methode zum Abrufen von CPU-Timing-Informationen mit hoher Auflösung und geringem Overhead. Mit dem Aufkommen von Multi-Core- / Hyperthread-CPUs, Systemen mit mehreren CPUs und "Hibernating" -Betriebssystemen kann man sich nicht darauf verlassen , dass die TSC genaue Ergebnisse liefert- es sei denn, es wird große Sorgfalt darauf verwendet, die möglichen Fehler zu korrigieren: Tickrate und ob alle Kerne (Prozessoren) identische Werte in ihren Zeitregistern haben. Es gibt kein Versprechen, dass die Zeitstempelzähler mehrerer CPUs auf einem einzelnen Motherboard synchronisiert werden. In solchen Fällen können Programmierer nur dann zuverlässige Ergebnisse erzielen, wenn sie ihren Code an eine einzelne CPU binden. Selbst dann kann sich die CPU-Geschwindigkeit aufgrund von Energiesparmaßnahmen des Betriebssystems oder des BIOS ändern, oder das System kann in den Ruhezustand versetzt und später wieder aufgenommen werden (Zurücksetzen des Zeitstempelzählers). In letzteren Fällen muss der Zähler regelmäßig neu kalibriert werden, um relevant zu bleiben (entsprechend der Zeitauflösung, die Ihre Anwendung erfordert).

Kurz gesagt, bei modernen Systemen saugt der TSC, um die Zeit genau zu messen . Und genau das sagt Ihnen die Nachricht. Auf Ihrem System ist die TSC keine stabile Zeitquelle.

Die deltaangemerkt, würde ich davon ausgehen, ist das gemeldete Zeit Delta zwischen zwei Ticks des TSC. Das heißt, jedes Mal, wenn die TSC hochzählt 1, sind NNNNNNNNNNanosekunden vergangen. So können Sie normalerweise eine sehr genaue Zeit halten.

Der Linux-Kernel hat diese Frequenz mehrmals überprüft (um festzustellen, ob die Quelle stabil ist) und es wurden unterschiedliche Ergebnisse erzielt. Also die Nachricht.


Müssen Sie sich also Sorgen machen?
Ich weiß es ehrlich gesagt nicht. Nach meinem Verständnis entsteht dieses Problem dadurch, dass Prozesse zwischen Kernen "verschoben" werden (jeder Kern könnte eine andere TSC-Frequenz haben) oder dass ein Kern seine Kernfrequenz ändert (wie beim Energiesparen).

Höchstwahrscheinlich wird die Nachricht nur gedruckt, weil der Kernel dieses Problem selbst erkannt hat und es nun entsprechend anpasst.

Und nach dem, was ich in den Kernelquellen ( arch/x86/kernel/tsc.c) gelesen habe, glaube ich nicht, dass ich mit meinen Annahmen zu weit weg bin.

Ich bezweifle, dass die Nachricht einen kritischen Zustand bedeutet. Und ich gehe davon aus, dass Sie inzwischen wissen würden, ob es kritisch ist.

Der Hochstapler
quelle
2
Aus demselben Artikel zitierend, bieten einige moderne CPUs auch einen konstanten Zeitstempelzähler : Neuere Intel-Prozessoren enthalten eine TSC mit konstanter Rate (gekennzeichnet durch das Flag const_tsc in Linux / proc / cpuinfo). Bei diesen Prozessoren liest die TSC unabhängig von der tatsächlichen CPU-Ausführungsrate mit der maximalen Rate des Prozessors.
Scai
Empfehlen Sie die Verwendung von hpet anstelle von tsc?
CMCDragonkai
1
Ich möchte nur Informationen hinzufügen. Dass ich heute auf einem unserer Supermicro-Server mit diesem Problem konfrontiert war. Das Betriebssystem ist RHEL 6.5 und gibt dieselbe Nachricht aus. Und dieser Server kriecht gerade im Schneckentempo. Es ist eine Stunde her und der Start ist noch nicht abgeschlossen. Mein nächster Schritt besteht darin, den Zähler zu ändern und Informationen in die Datei grub.conf einzufügen, indem ich in den Rettungsmodus gehe. Weil der Einzelbenutzermodus auch nicht funktioniert
OmiPenguin