Como corrigir "BUG: soft lockup - CPU # 0 travada por 17163091968s"?

14

UPDATE: Atualizei o título da mensagem, porque recentemente vi mais desses problemas com esse período exato de 17163091968s. Isso deve ajudar as pessoas que investigam os sintomas a encontrar esta página. Veja minha resposta (auto) aceita abaixo.


Eu tenho várias VMs LTS do Ubuntu 10.04 de 64 bits em um datacenter do VMware vSphere. As ferramentas VMware estão instaladas (o vSphere Client diz "OK").

Eu já vi algumas VMs travarem algumas vezes com o seguinte erro no syslog. Ao verificar a situação no vSphere, o console estava preto e o comando "Reboot guest" não fez nada, então tive que ligar e desligar a VM.

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:

(Não há rastreamento - essa é a última linha.)

Parece que não tenho mais os outros erros, mas tenho certeza de que o processo mencionado acima ( jed) foi diferente nos outros despejos.

  • O que poderia causar este problema?

  • Como evitar que isso aconteça?

Algumas informações extras:

  • O valor 17163091988é um pouco (trocadilhos) suspeito - é 1111111111000000000000000000010100em binário. Talvez o erro estivesse tentando dizer 20 segundos ( 10100em binário)?

  • Não tenho certeza se o problema persiste com o kernel 10.04 mais recente (2.6.32-35).

  • Eu também vi task ... blocked for more than 120 secondsproblemas - talvez eles possam estar relacionados?

  • o cliente vSphere não mostra alertas ou tarefas de migração para a VM.

tuomassalo
fonte
talvez algo de tempo errado? Você pode brincar com clocksource. Também os estados C das CPUs são um bom palpite.
SaveTheRbtz 2/11/11

Respostas:

12

Obrigado a todos os comentadores. Eu acho que encontrei a resposta. Parece haver um bug de cronometragem em pelo menos a versão 2.6.32-30-server do kernel do Ubuntu. Às vezes, o erro (?) Mata máquinas quando elas atingem um tempo de atividade de cerca de 200 a 210 dias. Na verdade, a parada não ocorre imediatamente após o limite ser atingido, mas é acionada por alguma operação (no meu caso apt-get install ...:).

Nota: 200 dias são cerca de 2 ^ 32 vezes 1/250 segundo e 250 é o valor padrão para CONFIG_HZ.

Por enquanto, não encontrei dados sobre se o problema foi corrigido nos kernels mais recentes. Eu sei que ele não parece afetar um kernel mais antigo (2.6.32-26-server). De todas essas informações, presumo que, se ainda não tiver sido corrigido, poderá ser evitado por:

  • inicialize as máquinas a cada 190 dias (uma boa idéia para atualizações do kernel)
  • ajuste CONFIG_HZ para 100 e faça isso a cada 497 dias. No entanto, isso pode ter efeitos colaterais inesperados, especialmente em ambientes virtuais. E isso não resolve o problema.

Aqui está um relatório de bug para o Ubuntu.

tuomassalo
fonte
Boa descoberta - pergunto se ela escorre para o debian
thinice
Por curiosidade: você está usando NTP ou sincronização de hora via vmware? Parece mudança de tempo constante ou algo assim .. deve haver entradas registradas de mudança de tempo no syslog.
pauska
Eu só vi algo que parece ser relacionados no debian, 2.6.32-5-amd64 do kernel mostrando dois macios bloqueio ups que está realizando "estranhamente"
James
5

Este é realmente um bug do kernel que foi corrigido pelo seguinte commit do kernel:

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

Você pode pesquisar no LKML o seguinte título (não pode postar mais de 2 links): [estável] 2.6.32.21 - falhas relacionadas ao tempo de atividade?

E este é o bug do LP # que traz a correção do kernel:

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

A atualização para o kernel mais recente no lucid-updates deve corrigir esse problema definitivamente.

HTH

Louis
fonte
2

Será que o host de virtualização possui alguns recursos de economia de energia ("TI Verde") ativados que podem enviar núcleos não utilizados para um modo de baixo consumo / energia, causando interrupções interessantes nas VMs usando esse núcleo? Ouvi dizer que isso costumava ser um problema principalmente em ambientes HyperV, mas pode ser algo para analisar.

daff
fonte
1

Caso alguém ache isso, uma atualização do kernel corrigiu um problema semelhante para mim. Eu tinha um JBOD que estava conectado ao sistema através de um controlador SAS3, lançando esses erros de Softlock da CPU na inicialização.

Eu tinha o kernel do Ubuntu 14.04.2 versão 3.16.0-30 e, ao fazer um "apt -y upgrade", finalizei no kernel 3.16.0-49, e isso resolveu o problema.

Locane
fonte