Subject: Re: Slow inbound traffic on macvtap interfaces

From: Chris Webb <[email-masked]>
Date: Thu, 16 Aug 2012 15:27:57 +0100

"Michael S. Tsirkin" <[email-masked]> writes:

> On Thu, Aug 16, 2012 at 10:20:05AM +0100, Chris Webb wrote:
>
> > For example, I can run
> > 
> >   ip addr add 192.168.1.2/24 dev eth0
> >   ip link set eth0 up
> >   ip link add link eth0 name tap0 address 02:02:02:02:02:02 type macvtap mode bridge
> >   ip link set tap0 up
> >   qemu-kvm -hda debian.img -cpu host -m 512 -vnc :0 \
> >     -net nic,model=virtio,macaddr=02:02:02:02:02:02 \
> >     -net tap,fd=3 3<>/dev/tap$(< /sys/class/net/tap0/ifindex)
> > 
> > on one physical host which is otherwise completely idle. From a second
> > physical host on the same network, I then scp a large (say 50MB) file onto
> > the new guest. On a gigabit LAN, speeds consistently drop to less than
> > 100kB/s as the transfer progresses, within a second of starting.

> Thanks for the report.
> I'll try to reproduce this early next week.
> Meanwhile a question - do you still observe this behaviour if you enable
> vhost-net?

I haven't tried running with vhost-net before. Is it sufficient to compile
the host kernel with CONFIG_VHOST_NET=y and boot the guest with

  qemu-kvm -hda debian.img -cpu host -m 512 -vnc :0 \
    -net nic,model=virtio,macaddr=02:02:02:02:02:02 \
    -net tap,fd=3,vhost=on,vhostfd=4 \
    3<>/dev/tap$(< /sys/class/net/tap0/ifindex) 4<>/dev/vhost-net

? If so, then I'm afraid this doesn't make any difference: it still stalls
and drops right down in speed.

The reason I'm hesitant about whether the vhost-net is actually working is
that with both vhost=off and vhost=on, I see an identical virtio feature set
within the guest:

  # cat /sys/bus/virtio/devices/virtio0/features 
  0000011000000001111100000000100000000000000000000000000000000000

However, without the 4<>/dev/vhost-net or with 4<>/dev/null, it seems to
fail to start altogether with vhost=on,vhostfd=4, so perhaps it's fine?

Cheers,

Chris.