“ clocksource tsc不稳定”是什么意思?


10

每当我看到Linux启动时,都会看到以下消息:

时钟源tsc不稳定(delta = NNNNNNNN ns)

其中NNNNNNNN是一个非常大的数字,可能是正数或负数。

此消息是什么意思?我应该担心这个吗?


我认为tsc是指时间戳计数器。如果有帮助。
Der Hochstapler

另外,根据我在网上找到的有关此消息的信息,您是否在物理机或虚拟机上看到此消息。似乎很重要。
Der Hochstapler

物理的和虚拟的。当我在几个不同的系统上启动Linux时,会收到此消息。
bwDraco

/var/log/message当将选项“ acpi = off”添加到/etc/grub.conf(作为kernel=选项)时,我得到了此消息。当我删除它,重新启动后,该消息消失了。具有内核的CentOS 6:.6.32-279.19.1.el6.x86_64

Answers:


8

老实说,我今天第一次看到此消息,却不知道它实际上意味着什么。

话虽如此,我读了时间戳记计数器上的Wikipedia文章(这是tsc错误消息中所代表的意思)。本文在第二段中提到了TSC的问题:

直到最近,时间戳计数器一直是获取CPU时序信息的一种出色的高分辨率,低开销的方法。随着多核/超线程CPU,具有多个CPU的系统以及“休眠”操作系统的出现,不能依靠TSC来提供准确的结果—除非特别注意纠正可能的缺陷:滴答率以及所有内核(处理器)在其计时寄存器中是否具有相同的值。不能保证单个主板上多个CPU的时间戳计数器将同步。在这种情况下,程序员只能通过将代码锁定在单个CPU上才能获得可靠的结果。即使这样,由于OS或BIOS采取了节电措施,CPU速度可能会发生变化,或者系统可能会进入休眠状态,然后再恢复运行(重置时间戳记计数器)。在后一种情况下,为了保持相关性,必须定期重新校准计数器(根据您的应用程序要求的时间分辨率)。

简而言之,在现代系统上,TSC难以准确测量时间。这就是消息告诉您的。在您的系统上,TSC不是稳定的时间源。

delta所指出的,我会承担,是TSC两个刻度之间的报告时间增量。意思是,每当TSC计数时1NNNNNNNNN将经过十亿分之一秒。因此,这通常是您可以保持非常准确的时间的方式。

linux内核将多次检查该频率(以确定源是否稳定),并且得到不同的结果。因此,消息。


那么,您需要关注吗?
老实说我不知道​​。据我了解,此问题是由于进程在内核之间“移动”(每个内核可能具有不同的TSC频率)或内核更改其内核频率(如节能)引起的。

最有可能的是,仅打印该消息是因为内核本身检测到了此问题,并且现在将进行相应调整。

而且,从我从内核源代码(arch/x86/kernel/tsc.c)中阅读的内容来看,我认为我的假设与我相距不远。

我怀疑该消息是否意味着紧急情况。我以您现在知道是否很关键的假设为基础。


2
从同一篇文章中引用,某些现代CPU还提供了恒定的时戳计数器:近期的Intel处理器包括恒定速率的TSC(由Linux的/ proc / cpuinfo中的constant_tsc标志标识)。使用这些处理器,TSC会以处理器的最大速率读取数据,而不管实际的CPU运行速率如何。
scai 2013年

您是否建议使用hpet而不是tsc?
CMCDragonkai 2014年

1
我只想添加信息。今天,我在我们的一台超微型服务器上遇到了这个问题。操作系统是RHEL 6.5,并且正在发出相同的消息。现在,该服务器正在以惊人的速度爬行。一个小时了,启动还没有完成。我的下一步将是通过进入救援模式来更改计数器并在grub.conf文件中添加信息。由于单用户模式也不起作用
OmiPenguin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.