Voici ce que crachait l’un de mes dom0 Debian/Squeeze sous Xen 4.0:
Nov 10 05:32:22 yavin kernel: [838380.839883] BUG: soft lockup - CPU#0 stuck for 61s! [swapper:0] Nov 10 05:32:22 yavin kernel: [838380.839883] Modules linked in: dummy xt_tcpudp iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack xt_physdev iptable_filter ip_tables x_tables xen_evtchn xenfs bridge stp ext2 w83627hf w83793 hwmon_vid loop snd_pcm snd_timer snd radeon soundcore snd_page_alloc ttm drm_kms_helper parport_pc drm parport pcspkr evdev i2c_i801 i2c_algo_bit rng_core serio_raw i2c_core container shpchp pci_hotplug i3000_edac button processor edac_core acpi_processor ext3 jbd mbcache dm_mod raid1 md_mod sd_mod crc_t10dif ata_generic uhci_hcd ata_piix libata thermal floppy ehci_hcd scsi_mod thermal_sys usbcore nls_base e1000e [last unloaded: dummy]
Le tout saupoudré de quelques stack traces du meilleur effet:
Nov 11 19:52:20 yavin kernel: [976376.042974][ ] ? xen_swiotlb_unmap_page+0x0/0x5 Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? xen_force_evtchn_callback+0x9/0xa Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? check_events+0x12/0x20 Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? xen_swiotlb_unmap_page+0x0/0x5 Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? xen_restore_fl_direct_end+0x0/0x1 Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? kfree+0xc6/0xcb Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? skb_release_head_state+0xb4/0xc8 Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? __kfree_skb+0x9/0x7d Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? e1000_put_txbuf+0x5a/0x6c [e1000e] Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? e1000_clean_tx_irq+0x9d/0x21e [e1000e] Nov 11 19:52:20 yavin kernel: [976376.042974] [ ] ? e1000_clean+0x5c/0x235 [e1000e]
Et j’en passe. Bref, ça pue.
Après m’être documenté quelque peu sur les erreurs constatées, deux actions semblent avoir stabilisé la situation. Premièrement, plusieurs posts dans quelques forums indiquent que l’installation de intel-microcode et microcode.ctl permet de “réparer” certains bugs embarqués dans les processeurs Intel. Je m’execute:
# apt-get install intel-microcode microcode.ctl
Deuxièmement, comme le conseille la section Best Practices de Xen.org, il est de bon ton de:
- Fixer la quantité de mémoire du dom0 afin d’éviter le ballooning
- Attacher un core (“cpu pinning”) au dom0
Ainsi, j’ajoute la ligne suivante au fichier /etc/default/grub:
GRUB_CMDLINE_XEN="dom0_mem=1024M dom0_max_vcpus=1 dom0_vcpus_pin"
Et précise dans /etc/xen/xend-config.sxp:
(dom0-min-mem 1024)
Ne disposant, sur cette machine, que de deux cores, je n’exclurai pas le CPU0 de la configuration des domU, mais fais confiance à l’hyperviseur pour équilibrer les ressources efficacement, sachant que désormais le CPU0 est “pinné” au dom0. Reste alors à régénérer la configuration de grub:
# update-grub
Et, malheureusement, de rebooter. Pas le choix ici.
Moyennant ces ajustements, mon dom0 ne semble plus souffir, alors que ses domUs compilent à tour de bras.

Recent Comments