更新:我更新了消息的标题,因为我最近看到了更多这样的问题,这些问题的时间恰好是这个数额17163091968s
。这应该有助于调查症状的人找到此页面。请参阅下面我(自我)接受的答案。
我在 VMware vSphere 数据中心有一堆 64 位 Ubuntu 10.04 LTS VM。VMware 工具已安装(vSphere Client 显示“OK”)。
我曾多次看到一些虚拟机挂起,并在系统日志中显示以下错误。从 vSphere 检查情况时,控制台一片漆黑,并且“重新启动客户机”命令没有任何作用,因此我不得不关闭虚拟机并重新开机。
Dec 1 11:44:15 s0 kernel: [18446744060.007150] BUG: soft lockup - CPU#0 stuck for 17163091988s! [jed:26674]
Dec 1 11:44:15 s0 kernel: [18446744060.026854] Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus hfs minix ntfs vfat msdos fat jfs xfs exportfs reiserfs xt_tcpudp iptable_filter ip_tables x_tables acpiphp fbcon tileblit font bitblit softcursor ppdev vga16fb psmouse parport_pc shpchp vgastate i2c_piix4 lp parport serio_raw intel_agp floppy mptspi mptscsih vmw_pvscsi e1000 mptbase
Dec 1 11:44:15 s0 kernel: [18446744060.026899] CPU 0:
Dec 1 11:44:15 s0 kernel: [18446744060.026900] Modules linked in: btrfs zlib_deflate crc32c libcrc32c ufs qnx4 hfsplus hfs minix ntfs vfat msdos fat jfs xfs exportfs reiserfs xt_tcpudp iptable_filter ip_tables x_tables acpiphp fbcon tileblit font bitblit softcursor ppdev vga16fb psmouse parport_pc shpchp vgastate i2c_piix4 lp parport serio_raw intel_agp floppy mptspi mptscsih vmw_pvscsi e1000 mptbase
Dec 1 11:44:15 s0 kernel: [18446744060.026920] Pid: 26674, comm: jed Not tainted 2.6.32-30-server #59-Ubuntu VMware Virtual Platform
Dec 1 11:44:15 s0 kernel: [18446744060.026922] RIP: 0033:[<00007f92e03d2ce6>] [<00007f92e03d2ce6>] 0x7f92e03d2ce6
Dec 1 11:44:15 s0 kernel: [18446744060.026930] RSP: 002b:00007fff6069b770 EFLAGS: 00000202
Dec 1 11:44:15 s0 kernel: [18446744060.026932] RAX: 00007f92e27e7e10 RBX: 00007f92e06d5e40 RCX: 0000000000020000
Dec 1 11:44:15 s0 kernel: [18446744060.026933] RDX: 00007f92e27e7e10 RSI: 0000000000020209 RDI: 0000000000000002
Dec 1 11:44:15 s0 kernel: [18446744060.026934] RBP: ffffffff81013cae R08: 0000000000000001 R09: 0000000000000000
Dec 1 11:44:15 s0 kernel: [18446744060.026935] R10: 00007f92e06d6398 R11: 0000000000000870 R12: 00000000000000c0
Dec 1 11:44:15 s0 kernel: [18446744060.026937] R13: 00007f92e299dca0 R14: 0000000000000020 R15: 00007f92e06d5e40
Dec 1 11:44:15 s0 kernel: [18446744060.026939] FS: 00007f92e105b700(0000) GS:ffff880009c00000(0000) knlGS:0000000000000000
Dec 1 11:44:15 s0 kernel: [18446744060.026940] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Dec 1 11:44:15 s0 kernel: [18446744060.026941] CR2: 00007ff12ea15000 CR3: 0000000267067000 CR4: 00000000000006f0
Dec 1 11:44:15 s0 kernel: [18446744060.026968] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Dec 1 11:44:15 s0 kernel: [18446744060.026989] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Dec 1 11:44:15 s0 kernel: [18446744060.026991] Call Trace:
(没有任何痕迹——这是最后一句。)
我似乎不再有其他错误,但我很确定上面提到的过程(jed
)在其他转储中是不同的。
什么可能导致这个问题?
如何防止这种情况发生?
一些额外的信息:
这个值
17163091988
有点(双关语)可疑——它是1111111111000000000000000000010100
二进制的。也许错误是想说20秒(10100
二进制)?我不确定最新的 10.04 内核(2.6.32-35)是否存在该问题。
我也看到了
task ... blocked for more than 120 seconds
一些问题——也许它们有关联?vSphere 客户端未显示该虚拟机的警报或迁移任务。
答案1
感谢所有评论者。我想我找到了答案。至少在 Ubuntu 的内核版本 2.6.32-30-server 中似乎有一个计时错误。这个错误有时 (?) 会在机器达到大约 200..210 天的正常运行时间时杀死它们。实际上,停止并不是在达到限制后立即发生的,而是由某些操作触发的(在我的情况下:)apt-get install ...
。
注意:200 天约为 2^32 乘以 1/250 秒,250 是 CONFIG_HZ 的默认值。
目前,我还没有找到有关该问题是否已在较新的内核中得到修复的数据。但我知道它似乎不会影响较旧的内核(2.6.32-26-server)。根据所有这些信息,我推测如果尚未修复,可以通过以下方式避免:
- 每 190 天启动一次机器(对于内核升级来说,这是一个好主意)
- 将 CONFIG_HZ 调整为 100,这样每 497 天就会发生一次。然而,这可能会产生意想不到的副作用,尤其是在虚拟环境中。而且它不会解决问题。
以下是错误报告适用于 Ubuntu。
答案2
这实际上是一个内核错误,已通过以下内核提交修复:
您可以在 LKML 中搜索以下标题(不能发布超过 2 个链接):[稳定] 2.6.32.21 - 与正常运行时间相关的崩溃?
这是带来内核修复的 LP# 错误:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/902317
升级到 lucid-updates 中的最新内核应该可以彻底解决这个问题。
高血压
答案3
虚拟化主机是否启用了一些节能功能(“绿色 IT”),这些功能可能会使未使用的内核进入低功耗/睡眠模式,从而导致使用该内核的虚拟机出现有趣的中断?我听说这曾经主要是 HyperV 环境中的一个问题,但这可能是值得研究的问题。
答案4
万一其他人也发现了这个问题,内核升级为我解决了类似的问题。我有一个 JBOD,它通过 SAS3 控制器连接到系统,在启动时抛出了这些 CPU Softlock 错误。
我的 Ubuntu 14.04.2 内核版本是 3.16.0-30,执行“apt -y upgrade”后我得到了内核 3.16.0-49,这就解决了问题。