Назад | Перейти на главную страницу

Как исправить «ОШИБКА: мягкое зависание - ЦП № 0 завис на 17163091968»?

ОБНОВИТЬ: Я обновил заголовок сообщения, потому что в последнее время я видел больше таких проблем с этим точным временем 17163091968s. Это должно помочь людям, исследующим симптомы, найти эту страницу. См. Мой (сам) принятый ответ ниже.


У меня есть куча 64-битных виртуальных машин Ubuntu 10.04 LTS в центре обработки данных VMware vSphere. Инструменты VMware установлены (клиент vSphere говорит «ОК»).

Я видел, как некоторые виртуальные машины несколько раз зависали со следующей ошибкой в ​​системном журнале. При проверке ситуации из vSphere консоль была черной, а команда «Reboot guest» ничего не делала, поэтому мне пришлось выключить и снова включить виртуальную машину.

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) на других свалках было иначе.

Дополнительная информация:

Спасибо всем комментаторам. Думаю, я нашел ответ. Кажется, есть ошибка хронометража, по крайней мере, в ядре Ubuntu версии 2.6.32-30-server. Ошибка иногда (?) Убивает машины, когда они достигают времени безотказной работы около 200..210 дней. На самом деле остановка не происходит сразу после достижения лимита, а запускается некоторой операцией (в моем случае: apt-get install ...).

NB: 200 дней - это примерно 2 ^ 32 умноженное на 1/250 секунды, а 250 - это значение по умолчанию для CONFIG_HZ.

На данный момент я не нашел данных о том, исправлена ​​ли проблема в более поздних версиях ядер. Я знаю, что это не влияет на старое ядро ​​(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

Вы можете выполнить поиск в LKML по следующему заголовку (не может публиковать более двух ссылок): [стабильный] 2.6.32.21 - сбои, связанные с работоспособностью?

И это ошибка LP #, которая приносит исправление ядра:

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

Обновление до последней версии ядра в lucid-updates должно исправить эту проблему навсегда.

HTH

Может быть, на хосте виртуализации включены некоторые функции энергосбережения («Green IT»), которые могут отправлять неиспользуемые ядра в режим пониженного энергопотребления / сна, вызывая интересные сбои в виртуальных машинах, использующих это ядро? Я слышал, что раньше это было проблемой в основном в средах HyperV, но, возможно, в этом есть что-то, что нужно изучить.

В случае, если кто-то другой обнаружит это, обновление ядра устранило аналогичную проблему для меня. У меня был JBOD, который был подключен к системе через контроллер SAS3, который выдавал эти ошибки CPU Softlock при загрузке.

У меня было ядро ​​Ubuntu 14.04.2 версии 3.16.0-30, и выполнение «apt -y upgrade» привело к тому, что я остановился на ядре 3.16.0-49, и это решило проблему.