Re: [PATCH 0/6] Kill off the virtio_net tx mitigation timer

Mark McLoughlin
2008-11-06T16:47:05Z

Hey,
So, I went off and spent some time gathering more data on this stuff
and putting it together in a more consumable fashion.

Here are some graphs showing the effect some of these changes have on
throughput, cpu utilization and vmexit rate:

http://markmc.fedorapeople.org/virtio-netperf/2008-11-06/

The results are a little surprising, and I'm not sure I've fully
digested them yet but some conclusions:

1) Disabling notifications from the guest for longer helps; you see
an increase in cpu utilization and vmexit rate, but that can be
accounted for by the extra data we're transferring

2) Flushing (when the ring is full) in the I/O thread doesn't seem to
help anything; strangely, it has a detrimental effect on
host->guest traffic where I would expect us to hit this case at
all.

I suspect we may not actually be hitting the full ring condition
in these tests at all.

3) The catch-more-io thing helps a little, especially host->guest,
without any real detrimental impact.

4) Removing the tx timer doesn't have a huge affect on guest->host,
except for 32 byte buffers where we see a huge increase in vmexits
and a drop in throughput. Bizarrely, we don't see this effect with
64 byte buffers.

However, it does have a pretty significant impact on host->guest,
which makes sense since in that case we'll just have a steady
stream of TCP ACK packets so if small guest->host packets are
affected badly, so will the ACK packets.

5) The drop-mutex patch is a nice win overall, except for a huge
increase in vmexits for sub-4k guest->host packets. Strange.

Cheers,
Mark.