Change network interface to virtio

Hi,

One of our vm is running haproxy. The network traffic is not extremely high, but we get a very high interrupts on eth0 and a somewhat high sys% usage with top:

# cat /proc/interrupts
           CPU0       CPU1       CPU2       CPU3
  0:         32          0          0          0   IO-APIC-edge      timer
  1:         11          0          0        114   IO-APIC-edge      i8042
  6:          3          0          0          0   IO-APIC-edge      floppy
  8:          1          0          0          0   IO-APIC-edge      rtc0
  9:          0          0          0          0   IO-APIC-fasteoi   acpi
 10:          0          0          0          0   IO-APIC-fasteoi   virtio1
 11:        618 4030393421          0          0   IO-APIC-fasteoi   uhci_hcd:usb1, eth0
 12:        145          0       1999          0   IO-APIC-edge      i8042
 14:    6145272      45521     465460     254522   IO-APIC-edge      ata_piix
 15:          0          0          0          0   IO-APIC-edge      ata_piix
 40:          0          0          0          0   PCI-MSI-edge      virtio0-config
 41:    2231375          0          0          0   PCI-MSI-edge      virtio0-requests
NMI:          0          0          0          0   Non-maskable interrupts
LOC:  191668930 1335675535   63976200   30892760   Local timer interrupts
SPU:          0          0          0          0   Spurious interrupts
PMI:          0          0          0          0   Performance monitoring interrupts
IWI:  126958019 1055367646   38709278   15832142   IRQ work interrupts
RTR:          0          0          0          0   APIC ICR read retries
RES:  405498092  132045090  125792966   54918908   Rescheduling interrupts
CAL:        272        384        352        351   Function call interrupts
TLB:    2147139    2002908    1985286    1568447   TLB shootdowns
TRM:          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0   Threshold APIC interrupts
MCE:          0          0          0          0   Machine check exceptions
MCP:      23589      23589      23589      23589   Machine check polls
ERR:          0
MIS:          0

Looking at the ONE backend, I saw that the network driver is rtl8319, and as far as I understand virtio should give us a better performance.

  • Will virtio give us better performance?
  • What’s the easiest way to change the interface from rtl8319 to virtio without recreating the whole vm?

thanks!

Probably the easiest way is to attach a new NIC to the VM with
model=virtio…

Hi Ruben,
I tried that but I hit this problem:
http://lists.opennebula.org/pipermail/users-opennebula.org/2014-August/045889.html

I upgraded the ONE backend box and restarted both apparmor and libvirt-bin, but it is still failing to attach.