[libvirt] How to enable vhost for virtIO NIC?
Laine Stump
laine at laine.org
Wed May 19 16:22:56 UTC 2010
On 05/19/2010 01:49 AM, Huang, Zhiteng wrote:
> Hi gurus on the list,
>
> I'm trying to bring up a Linux with virtio vhost backend. My system is running on kernel 2.6.34-rc7, libvirt 0.8.0.
>
> Two questions regarding to vhost:
>
> 1) XML format for vhost
> I didn't find any documents on libvirt.org description the XML or QMU argument format for vhost.
If you're using virtio networking, and vhost-net support is available on
your system, libvirt will automatically alter the qemu commandline
arguments to take advantage of it. libvirt checks for two things:
1) it runs "qemu-kvm --help" and looks for ",vhost=" in the output
(demonstrating that this build of qemu supports vhost)
2) it attempts to open "/dev/vhost-net" in rw mode (demonstrating that
the kernel support is there, either built into the kernel or loaded as a
module).
You can verify libvirt has enabled vhost by looking at the generated
commandline in /var/log/libvirt/qemu/<domain>.log for
"vhost=on,vhostfd=<some number>"
> According to http://www.linux-kvm.org/page/VhostNet#vhost-net_driver_projects, I tried *domxml-from-native* to convert following qemu argument to XML
>
> qemu-system-x86_64 -m 1G disk-c.qcow2 \
> -net nic,model=virtio,netdev=foo \
> -netdev tap,id=foo,ifname=msttap0,script=/home/mst/ifup,downscript=no,vhost=on
>
> But the output clearly ignore the network.
> <domain type='qemu'>
> <name>unnamed</name>
> <uuid>9cc877c1-7ac2-463d-3d3f-fa8f8918fe23</uuid>
> <memory>1048576</memory>
> <currentMemory>1048576</currentMemory>
> <vcpu>1</vcpu>
> <os>
> <type arch='x86_64'>hvm</type>
> </os>
> <features>
> <acpi/>
> </features>
> <clock offset='utc'/>
> <on_poweroff>destroy</on_poweroff>
> <on_reboot>restart</on_reboot>
> <on_crash>destroy</on_crash>
> <devices>
> <emulator>qemu-system-x86_64</emulator>
> <input type='mouse' bus='ps2'/>
> <graphics type='sdl'/>
> <video>
> <model type='cirrus' vram='9216' heads='1'/>
> </video>
> </devices>
> </domain>
>
> What's the problem here?
>
I haven't used domxml-from-native, so I can't help you there.
> 2) Virtio driver.
> It's said that vhost require guest kernel version> 2.6.31 because vhost requires MSI-X. How about frontend of virtio driver? Say I'm running a Windows 2008 (with MSI-X support) + virtio NIC, is it necessary to upgrade frontend driver too?
>
>
a vhost virtio NIC appears to the guest driver identically to a
user-space virtio NIC, so the same guest-side driver should work fine.
(Actually, the vhost NIC doesn't (yet) support shared buffers that the
user-space NIC does, but the guest's driver can deal with that)
More information about the libvir-list
mailing list