Comment réparer «BUG: soft lockup - CPU # 0 stuck for 17163091968s»?

14

MISE À JOUR: J'ai mis à jour le titre du message, car j'ai récemment vu plus de ces problèmes avec cette durée exacte de 17163091968s. Cela devrait aider les personnes qui enquêtent sur les symptômes à trouver cette page. Voir ma réponse (auto-) acceptée ci-dessous.


J'ai un tas de machines virtuelles Ubuntu 10.04 LTS 64 bits dans un centre de données VMware vSphere. Les outils VMware sont installés (vSphere Client dit "OK").

J'ai vu quelques-unes des VM se bloquer plusieurs fois avec l'erreur suivante dans syslog. Lors de la vérification de la situation depuis vSphere, la console était noire et la commande "Redémarrer l'invité" n'a rien fait, j'ai donc dû redémarrer la machine virtuelle.

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:

(Il n'y a aucune trace - c'est la dernière ligne.)

Je ne semble plus avoir les autres erreurs, mais je suis sûr que le processus mentionné ci-dessus ( jed) était différent dans les autres vidages.

  • Qu'est-ce qui pourrait causer ce problème?

  • Comment éviter que cela se produise?

Quelques informations supplémentaires:

  • La valeur 17163091988est un peu (jeu de mots voulu) suspecte - c'est 1111111111000000000000000000010100en binaire. Peut-être que l'erreur essayait de dire 20 secondes ( 10100en binaire)?

  • Je ne sais pas si le problème persiste avec le dernier noyau 10.04 (2.6.32-35).

  • J'ai également vu des task ... blocked for more than 120 secondsproblèmes - peut-être qu'ils pourraient être liés?

  • le client vSphere n'affiche aucune alerte ni tâche de migration pour la machine virtuelle.

tuomassalo
la source
peut-être quelque chose de mauvais chronométrage? Vous pouvez jouer avec clocksource. Les états C des CPU sont également une bonne supposition.
SaveTheRbtz

Réponses:

12

Merci à tous les commentateurs. Je pense avoir trouvé la réponse. Il semble y avoir un bug de chronométrage dans au moins la version 2.6.32-30 du serveur Ubuntu. Le bug tue parfois (?) Les machines lorsqu'elles atteignent un temps de disponibilité d'environ 200..210 jours. En fait, l'arrêt ne se produit pas immédiatement après que la limite est atteinte, mais est déclenché par une opération (dans mon cas:) apt-get install ....

NB: 200 jours est environ 2 ^ 32 fois 1/250 seconde, et 250 est la valeur par défaut pour CONFIG_HZ.

Pour l'instant, je n'ai pas trouvé de données indiquant si le problème a été résolu dans des noyaux plus récents. Je sais que cela ne semble pas affecter un noyau plus ancien (serveur 2.6.32-26). D'après toutes ces informations, je suppose que si ce n'est pas encore résolu, cela peut être évité en:

  • démarrer les machines tous les 190 jours (une bonne idée pour les mises à jour du noyau de toute façon)
  • ajustez CONFIG_HZ à 100 et faites ainsi tous les 497 jours. Cependant, cela peut avoir des effets secondaires assez inattendus, en particulier dans les environnements virtuels. Et cela ne résout pas le problème.

Voici un rapport de bogue pour Ubuntu.

tuomassalo
la source
Bonne trouvaille - je me demande si ça ruisselle sur Debian
Thinice
Par curiosité: utilisez-vous NTP ou la synchronisation de l'heure via vmware? Cela ressemble à un décalage temporel constant ou quelque chose comme ça .. il devrait y avoir des entrées enregistrées de décalage temporel dans syslog.
pauska
Je viens de voir quelque chose qui ressemble à Debian, 2.6.32-5-amd64 kernel montrant deux soft lock ups qui fonctionnent "bizarrement"
James
5

Il s'agit en fait d'un bogue du noyau qui a été corrigé par la validation du noyau suivante:

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

Vous pouvez rechercher dans LKML le titre suivant (ne peut pas publier plus de 2 liens): [stable] 2.6.32.21 - crash liés à la disponibilité?

Et voici le bogue LP # qui apporte la correction du noyau:

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

La mise à niveau vers le dernier noyau dans lucid-updates devrait résoudre définitivement ce problème.

HTH

Louis
la source
2

Se pourrait-il que l'hôte de virtualisation ait certaines fonctionnalités d'économie d'énergie ("Green IT") activées qui pourraient envoyer des cœurs inutilisés en mode basse consommation / veille, provoquant des perturbations intéressantes dans les machines virtuelles utilisant ce cœur? J'ai entendu dire que c'était un problème principalement dans les environnements HyperV, mais cela peut être quelque chose à examiner.

daff
la source
1

Au cas où quelqu'un d'autre trouverait cela, une mise à niveau du noyau a résolu un problème similaire pour moi. J'avais un JBOD qui était attaché au système via un contrôleur SAS3 lançant ces erreurs CPU Softlock au démarrage.

J'avais la version 3.16.0-30 du noyau Ubuntu 14.04.2, et faire une "mise à niveau apt -y" m'a conduit au noyau 3.16.0-49, et cela a résolu le problème.

Locane
la source