每当我看到Linux启动时,都会看到以下消息:
时钟源tsc不稳定(delta = NNNNNNNN ns)
其中NNNNNNNN是一个非常大的数字,可能是正数或负数。
此消息是什么意思?我应该担心这个吗?
每当我看到Linux启动时,都会看到以下消息:
时钟源tsc不稳定(delta = NNNNNNNN ns)
其中NNNNNNNN是一个非常大的数字,可能是正数或负数。
此消息是什么意思?我应该担心这个吗?
Answers:
老实说,我今天第一次看到此消息,却不知道它实际上意味着什么。
话虽如此,我读了时间戳记计数器上的Wikipedia文章(这是tsc
错误消息中所代表的意思)。本文在第二段中提到了TSC的问题:
直到最近,时间戳计数器一直是获取CPU时序信息的一种出色的高分辨率,低开销的方法。随着多核/超线程CPU,具有多个CPU的系统以及“休眠”操作系统的出现,不能依靠TSC来提供准确的结果—除非特别注意纠正可能的缺陷:滴答率以及所有内核(处理器)在其计时寄存器中是否具有相同的值。不能保证单个主板上多个CPU的时间戳计数器将同步。在这种情况下,程序员只能通过将代码锁定在单个CPU上才能获得可靠的结果。即使这样,由于OS或BIOS采取了节电措施,CPU速度可能会发生变化,或者系统可能会进入休眠状态,然后再恢复运行(重置时间戳记计数器)。在后一种情况下,为了保持相关性,必须定期重新校准计数器(根据您的应用程序要求的时间分辨率)。
简而言之,在现代系统上,TSC难以准确测量时间。这就是消息告诉您的。在您的系统上,TSC不是稳定的时间源。
该delta
所指出的,我会承担,是TSC两个刻度之间的报告时间增量。意思是,每当TSC计数时1
,NNNNNNNNN
将经过十亿分之一秒。因此,这通常是您可以保持非常准确的时间的方式。
linux内核将多次检查该频率(以确定源是否稳定),并且得到不同的结果。因此,消息。
那么,您需要关注吗?
老实说我不知道。据我了解,此问题是由于进程在内核之间“移动”(每个内核可能具有不同的TSC频率)或内核更改其内核频率(如节能)引起的。
最有可能的是,仅打印该消息是因为内核本身检测到了此问题,并且现在将进行相应调整。
而且,从我从内核源代码(arch/x86/kernel/tsc.c
)中阅读的内容来看,我认为我的假设与我相距不远。
我怀疑该消息是否意味着紧急情况。我以您现在知道是否很关键的假设为基础。
tsc
是指时间戳计数器。如果有帮助。