Remark: If i disable interrupts on CPU1-3 for virtio the performance is ok again.
Now we need someone with deeper knowledge of the in-kernel irqchip and the virtio/vhost driver development to say if this is a regression in qemu-kvm or a problem with the old virtio drivers if they receive the interrupt on different CPUs. Peter Lieven wrote: > it seems that with in-kernel irqchip the interrupts are distributed across > all vpcus. without in-kernel irqchip all interrupts are on cpu0. maybe > this is related. > > without inkernel irqchip > CPU0 CPU1 CPU2 CPU3 > 0: 16 0 0 0 IO-APIC-edge timer > 1: 23 0 0 0 IO-APIC-edge i8042 > 4: 1 0 0 0 IO-APIC-edge > 6: 4 0 0 0 IO-APIC-edge > floppy > 7: 0 0 0 0 IO-APIC-edge > parport0 > 8: 0 0 0 0 IO-APIC-edge rtc0 > 9: 0 0 0 0 IO-APIC-fasteoi acpi > 11: 76 0 0 0 IO-APIC-fasteoi > uhci_hcd:usb1 > 12: 102 0 0 0 IO-APIC-edge i8042 > 14: 0 0 0 0 IO-APIC-edge > ata_piix > 15: 16881 0 0 0 IO-APIC-edge > ata_piix > 24: 0 0 0 0 PCI-MSI-edge > virtio1-config > 25: 5225 0 0 0 PCI-MSI-edge > virtio1-requests > 26: 0 0 0 0 PCI-MSI-edge > virtio0-config > 27: 72493 0 0 0 PCI-MSI-edge > virtio0-input > ... > > with inkernel irqchip > CPU0 CPU1 CPU2 CPU3 > 0: 16 0 0 0 IO-APIC-edge timer > 1: 0 3 3 1 IO-APIC-edge i8042 > 4: 0 0 1 0 IO-APIC-edge > 6: 1 0 1 2 IO-APIC-edge > floppy > 7: 0 0 0 0 IO-APIC-edge > parport0 > 8: 0 0 0 0 IO-APIC-edge rtc0 > 9: 0 0 0 0 IO-APIC-fasteoi acpi > 11: 7 9 4 1 IO-APIC-fasteoi > uhci_hcd:usb1 > 12: 30 27 29 34 IO-APIC-edge i8042 > 14: 0 0 0 0 IO-APIC-edge > ata_piix > 15: 943 937 950 943 IO-APIC-edge > ata_piix > 24: 0 0 0 0 PCI-MSI-edge > virtio0-config > 25: 930 978 980 947 PCI-MSI-edge > virtio0-input > 26: 0 0 1 0 PCI-MSI-edge > virtio0-output > 27: 0 0 0 0 PCI-MSI-edge > virtio1-config > 28: 543 541 542 553 PCI-MSI-edge > virtio1-requests > ... > >