Que signifie «clocksource tsc unstable»?

10

Chaque fois que je vois le démarrage de Linux, je vois ce message:

clocksource tsc unstable (delta = NNNNNNNN ns)

où NNNNNNNN est un très grand nombre qui peut être positif ou négatif.

Que signifie ce message? Dois-je m'en préoccuper?

bwDraco
la source
Je pense que cela tscfait référence au compteur d'horodatage . Si ça aide.
Der Hochstapler
De plus, étant donné ce que je trouve sur ce message en ligne, voyez-vous ce message sur une machine physique ou virtuelle. Cela semble pertinent.
Der Hochstapler
À la fois physique et virtuel. Je reçois ce message sur plusieurs systèmes différents lorsque je démarre Linux sur eux.
bwDraco
J'ai reçu exactement ce message /var/log/messagelorsque j'ai ajouté les options "acpi = off" à /etc/grub.conf(en kernel=option). Quand je l'ai retiré, redémarré, le message était parti. CentOS 6 avec noyau: .6.32-279.19.1.el6.x86_64

Réponses:

8

Honnêtement, je vois ce message pour la première fois aujourd'hui et je n'ai aucune idée de ce qu'il signifie réellement.

Cela étant dit, j'ai lu l'article Wikipédia sur le compteur d'horodatage (c'est ce que tscsignifie le message d'erreur). L'article mentionne un problème avec le TSC dans le deuxième paragraphe:

Le compteur d'horodatage était, jusqu'à récemment, un excellent moyen à haute résolution et à faible surcharge d'obtenir des informations de synchronisation du processeur. Avec l'avènement des processeurs multicœurs / hyperthreadés, des systèmes à plusieurs processeurs et des systèmes d'exploitation "d'hibernation", le TSC ne peut plus être utilisé pour fournir des résultats précis- à moins que l'on prenne grand soin de corriger les éventuels défauts: taux de tick et si tous les cœurs (processeurs) ont des valeurs identiques dans leurs registres de chronométrage. Il n'y a aucune promesse que les compteurs d'horodatage de plusieurs processeurs sur une seule carte mère seront synchronisés. Dans de tels cas, les programmeurs ne peuvent obtenir des résultats fiables qu'en verrouillant leur code sur un seul processeur. Même dans ce cas, la vitesse du processeur peut changer en raison des mesures d'économie d'énergie prises par le système d'exploitation ou le BIOS, ou le système peut être mis en veille prolongée et repris plus tard (réinitialisation du compteur d'horodatage). Dans ces derniers cas, pour rester pertinent, le compteur doit être recalibré périodiquement (selon la résolution temporelle requise par votre candidature).

En bref, sur les systèmes modernes, le TSC aspire à mesurer le temps avec précision . Et c'est ce que le message vous dit. Sur votre système, le TSC n'est pas une source de temps stable.

Le deltanoté, je suppose, est le delta de temps signalé entre deux ticks du TSC. Cela signifie que chaque fois que le TSC compte 1, des NNNNNNNNNnanosecondes se sont écoulées. C'est ainsi que vous pouvez généralement garder un temps très précis.

Le noyau Linux aura vérifié cette fréquence plusieurs fois (pour déterminer si la source est stable) et il a obtenu des résultats différents. Ainsi, le message.


Alors, avez-vous besoin de vous inquiéter?
Honnêtement, je ne sais pas. À ma connaissance, ce problème découle de processus "déplacés" entre les cœurs (chaque cœur peut avoir une fréquence TSC différente) ou d'un cœur changeant sa fréquence de cœur (comme avec une économie d'énergie).

Très probablement, le message n'est imprimé que parce que le noyau a détecté ce problème pour lui-même et va maintenant s'ajuster en conséquence.

Et, d'après ce que j'ai lu dans les sources du noyau ( arch/x86/kernel/tsc.c), je ne pense pas être trop loin de mes hypothèses.

Je doute que le message signifie une condition critique. Et je base cela sur l'hypothèse que vous sauriez maintenant si c'était critique.

Der Hochstapler
la source
2
Citant le même article, certains processeurs modernes fournissent également un compteur d'horodatage constant : les processeurs Intel récents incluent un TSC à débit constant (identifié par l'indicateur constant_tsc dans Linux / proc / cpuinfo). Avec ces processeurs, le TSC lit à la vitesse maximale du processeur, quelle que soit la vitesse de fonctionnement réelle du processeur.
scai
Recommandez-vous d'utiliser hpet au lieu de tsc?
CMCDragonkai
1
Je voudrais juste ajouter des informations. Aujourd'hui, j'ai rencontré ce problème sur l'un de nos serveurs supermicro. Le système d'exploitation est RHEL 6.5 et il donne le même message. Et ce serveur rampe au rythme de l'escargot en ce moment. Cela fait une heure et le démarrage n'est pas encore terminé. Ma prochaine étape sera de changer le compteur et d'ajouter des informations dans le fichier grub.conf en passant en mode de secours. Parce que le mode mono-utilisateur ne fonctionne pas non plus
OmiPenguin