Hi,
We are confused by the behavior of interrupt distribution across VCPU cores in Qemu guest VM.
If the number of CPU cores were no more than 8, the PCI-MSI interrupts were evenly distributed. Otherwise, all PCI-MSI interrupts went to virtual CPU0.
Furthermore, if we turned off kernel_irqchip explicitly, i.e. setting kernel_irqchip=off, no matter how many CPU cores the VM had, all PCI-MSI interrupts were bound to CPU0.
The hyperviser was Qemu-kvm 1.1.2 and the OSes of bother guest and host were CentOS 6.5.
I'm wondering why the PCI-MSI interrupts distribution became unbalanced when the VCPU cores more than 8?
Many thanks for your comments.
Jian Qiu
PS>
:kernel_irqchip=on
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 127 1 0 0 0 0 0 0 IO-APIC-edge timer
1: 1 1 1 1 2 1 0 1 IO-APIC-edge i8042
8: 0 0 0 0 1 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
11: 0 3 4 2 6 4 1 2 IO-APIC-fasteoi uhci_hcd:usb1
12: 0 18 18 20 16 18 19 17 IO-APIC-edge i8042
14: 4 12 6 11 9 10 9 11 IO-APIC-edge ata_piix
15: 0 0 0 0 0 0 0 0 IO-APIC-edge ata_piix
24: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio0-config
25: 282 520 311 309 303 297 299 302 PCI-MSI-edge virtio0-requests
26: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio1-config
27: 23 47 44 43 43 41 51 45 PCI-MSI-edge virtio1-requests
28: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio2-config
29: 57 80 81 79 80 84 81 80 PCI-MSI-edge virtio2-requests
30: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio3-config
31: 13 18 15 16 18 23 19 84 PCI-MSI-edge virtio3-input
32: 0 0 0 0 0 1 0 0 PCI-MSI-edge virtio3-output
kernel_irqchip=off
$ cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 129 0 0 0 0 0 0 0 IO-APIC-edge timer
1: 7 0 0 0 0 0 0 0 IO-APIC-edge i8042
8: 1 0 0 0 0 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
11: 32 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb1
12: 104 0 0 0 0 0 0 0 IO-APIC-edge i8042
14: 62 0 0 0 0 0 0 0 IO-APIC-edge ata_piix
15: 0 0 0 0 0 0 0 0 IO-APIC-edge ata_piix
24: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio0-config
25: 9753 8 0 9020 0 0 0 0 PCI-MSI-edge virtio0-requests
26: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio1-config
27: 337 0 0 0 0 0 0 0 PCI-MSI-edge virtio1-requests
28: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio2-config
29: 1102 12757 0 0 0 4 0 0 PCI-MSI-edge virtio2-requests
30: 0 0 0 0 0 0 0 0 PCI-MSI-edge virtio3-config
31: 6053 0 0 0 0 0 0 153200 PCI-MSI-edge virtio3-input
32: 3 0 0 0 0 0 0 0 PCI-MSI-edge virtio3-output