我们有六台服务器在运行几天后随机挂起。检查消息日志我发现他们都有“clocksource tsc unstable”然后“Time:acpi_pm clocksource已安装”。所有这些消息都发生在我们的一个应用程序的系统时间调整时刻,这使得服务器时间与远程系统保持同步。在每种情况下,服务器在安装“acpi_am”clocksource后的几个小时内挂起。
我们使用stime()函数直接设置系统时间。
我是这种调试的新手,但我试图通过阅读tsc.c源代码来理解它。我们的内核版本是2.6.23.8,cpu是Intel Core 2 Quad Q9400。
这是内核错误吗?或者acpi_pm clocksource是一个问题?
编辑1:在git log搜索当前Linux内核树中与“clocksource”相关的所有新更改后,发现有关clockources的大量更改。这很难找到可能适用于我的问题的现有修复。
编辑2:看起来我没有HPET
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc acpi_pm jiffies
编辑3:谢谢@thkala。 “挂”的描述:我仍然可以ping服务器。使用telnet我仍然可以探测出像21,80这样的公共端口仍处于打开状态。但SSH,VNC将“挂起”(没有来自服务器的响应)。将显示器连接到服务器,可以使用鼠标光标看到GUI,但屏幕只是冻结在同一张图片上。将usb光学鼠标连接到服务器,红灯会闪烁一次并完全变暗。连接usb键盘时,caplock numlock都无法点亮。
编辑4:至于证据。 @thkala真的很高兴。在强制它们关机并重启后,我检查了所有5台服务器的“挂起”问题,除了“clocksource tsc unstable”之外没有其他异常消息。 “tsc”日志在特定引导会话期间发生一次,并且在每种情况下,挂起发生在安装“acpi_pm”clocksource之后。有些服务器启动了很多~16天,在安装“acpi_pm”后的1到13小时内服务器挂起。其他服务器没有显示此消息并且没有挂起..你是对的它不是决定性的但是我一直在根据猜测挖掘这个方向..
有人对此有所了解吗?
答案 0 :(得分:4)
(我真的不喜欢通过水晶球调试,但我会试一试......)
几点注意事项:
您未在问题的上下文中指定“hung”的确切含义。内核是否完全停止 - 或者它只是您的应用程序?是100%CPU并留在那里?它对任何刺激都有反应吗?在出现问题时是否有相关的控制台消息?
你没有提到你究竟是如何完成时钟和时间的。作为您的嫌疑人的计时系统 - “在几个小时内”并不是确切的证据。您是否排除了硬件问题(包括电源波动)?您还排除了什么以及为什么?
不稳定的时钟源比您想象的更常见 - 来自我自己的系统:
kernel: Marking TSC unstable due to TSC halts in idle
您正在使用一个非常老的内核 - 在调整时间时,已经有几个与内核锁定相关的修复,例如现在着名的June 30, 2012 leap second issue。
您似乎患有NIH syndrome - 使用自定义应用程序进行时间同步而不是NTP听起来像灾难的秘诀......