好的,现在我遇到了真正的服务器故障;)
启动一段时间后(大约一分钟),我的服务器挂起。我能做的就是硬重置。然后在 /var/log/kern.log 重新启动后,我可以找到:
Jul 29 22:38:57 leonidas kernel: [ 90.729598] longhaul: Failed to set requested frequency!
Jul 29 22:38:57 leonidas kernel: [ 90.731252] longhaul: Enabling "Ignore Revision ID" option.
Jul 29 22:38:57 leonidas kernel: [ 91.201461] longhaul: Failed to set requested frequency!
Jul 29 22:38:57 leonidas kernel: [ 91.201482] longhaul: Disabling ACPI C3 support.
Jul 29 22:38:57 leonidas kernel: [ 91.204230] longhaul: Disabling "Ignore Revision ID" option.
Jul 29 22:38:58 leonidas kernel: [ 91.416133] longhaul: Failed to set requested frequency!
Jul 29 22:38:58 leonidas kernel: [ 91.416152] longhaul: Enabling "Ignore Revision ID" option.
Jul 29 22:38:58 leonidas kernel: [ 91.960048] Clocksource tsc unstable (delta = -105611479 ns)
我在网上找到了一些资源,它说要更改时钟源,或者禁用 ACPI。我尝试禁用 ACPI,但没有帮助(但我注意到挂起之前的时间更长)。我无法将时钟更改为 hpet,因为我的系统没有这样的时钟。
cat /sys/devices/system/clocksource/clocksource0/available_clocksource 的输出:
acpi_pm jiffies tsc
我的系统是威盛 Epia 硬件上的 ubuntu 服务器。
您的 CPU 拒绝与系统合作,因为它试图控制 CPU 的时钟频率。这似乎是某些硬件的已知问题;longhaul驱动程序因某些配置而损坏,进而导致 CPU 节能问题,即 CPU 频率缩放问题。如果您回头查看原始错误帖子,您可以清楚地看到长途驱动程序“还活着”,即使它被认为是“坏掉的”。使用不同的时钟源禁用或覆盖此功能将是您的目标。
TSC 代表“时间戳计数器”,它应该与 CPU 的速度一致地递增。当 CPU 动态改变频率时,TSC 会发生“变化”或“偏离”,内核会注意到它;因此,来自内核的日志中有关 TSC 的消息。这里的技巧是找到 CPU 频率调节器并关闭该功能,或者始终启用最大 CPU。基本上,您希望 CPU 在没有频率缩放的情况下全速运行。在 Ubuntu 上,这也会受到 CPU 类型的影响——我的个人 PC 是较旧的 Athlon XP 机器,因此它安装了
powernowd
守护程序来控制 CPU 频率,因为它是 AMD CPU,即使它不能使用此功能. 英特尔 CPU 将(可能)使用其他东西,而威盛仍然是不同的东西。...并查看手册页中建议的程序(反过来,这将为您提供一些关于哪些程序可能是罪魁祸首的快速线索)。
另一种方法是将时钟源显式设置为
acpi_pm
,根据您提供的输出,这似乎是受支持的。您也可以尝试jiffies
,但acpi_pm
可能会给您带来更好的结果。一些搜索暗示您可能正在使用基于 VIA 的芯片,在处理 CPU 频率缩放时偶尔会出现驱动程序问题。由于我不知道你的具体硬件设置,我真的不能告诉你更多。祝你好运。