如何解决“BUG:软locking – CPU#0卡住17163091968”?

更新:我更新了邮件的标题,因为我最近看到了更多的这些问题,确切的时间量为17163091968s 。 这应该有助于人们调查症状,find这个网页。 请参阅下面我的(自我)接受的答案。


我在VMware vSphere数据中心有一堆64位Ubuntu 10.04 LTS虚拟机。 VMware工具已安装(vSphere Client说“确定”)。

我已经看到了一些虚拟机在syslog中出现了以下错误。 当从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客户端不会显示VM的警报或迁移任务。

感谢所有评论者。 我想我find了答案。 至lessUbuntu的内核版本2.6.32-30-服务器似乎有一个计时错误。 这个错误有时候(?)会在机器正常运行时间达到200..210天时被杀死。 实际上,在达到限制之后暂停并不会立即发生,而是由一些操作触发(在我的情况下: apt-get install ... )。

注意:200天大约是1/250秒的2 ^ 32倍,250是CONFIG_HZ的默认值。

目前为止,我还没有find关于这个问题是否在更新的内核中被修复的数据。 我知道这似乎并不影响一个较旧的内核(2.6.32-26-server)。 从所有这些信息中,我认为如果还没有确定,可以通过以下方法避免:

  • 每190天启动一次机器(无论如何都是内核升级的好主意)
  • 调整CONFIG_HZ为100,因此每497天。 但是,这可能会有相当意想不到的副作用,特别是在虚拟环境中。 而这并不能解决问题。

这是Ubuntu 的错误报告 。

这实际上是一个由以下内核提交所修复的内核错误:

http://git.kernel.org/?p=linux/kernel/git/tip/tip.git;a=commit;h=4cecf6d401a01d054afc1e5f605bcbfe553cb9b9

您可以searchLKML以下标题(不能发布超过2个链接):[稳定] 2.6.32.21 – 正常运行时间相关的崩溃?

这是带来内核修复的LP#错误:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/902317

在lucid-updates中升级到最新的内核应该可以解决这个问题。

HTH

虚拟化主机是否具有某些省电function(“绿色IT”),可以将未使用的内核发送到低功耗/睡眠模式,从而使使用该内核的虚拟机发生有趣的中断? 我听说这主要是在HyperV环境中的一个问题,但它可能是需要研究的。

如果有人发现这一点,内核升级为我解决了类似的问题。 我有一个通过SAS3控制器连接到系统的JBOD,在启动时抛出这些CPU Softlock错误。

我有Ubuntu的14.04.2内核版本3.16.0-30,做一个“apt -y升级”结束我在内核3.16.0-49,并解决了这个问题。