Mark McLoughlin wrote:
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/
This is very helpful.
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
Graphing cpu/bandwidth (cycles/bit) will show that nicely.
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.
That's good; ring full == stall, especially with smp guests.
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.
Wierd. Cacheline size effects? the host must copy twice the number of
cachelines for the same throughput, when moving between 32 and 64.
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.
no-tx-timer is good for two workloads: streaming gso packets, where the
packet is so large the vmexit count is low anyway, and small, latency
sensitive packets, where you need the vmexits. I'm worried about the
workloads in between, which is why I'm pushing for the dynamic window.
5) The drop-mutex patch is a nice win overall, except for a huge
increase in vmexits for sub-4k guest->host packets. Strange.
What types of vmexits are these? virtio pio or mmu? and what's the
test length (interested in vmexits/sec and vmexits/bit).
Maybe the allocator changes its behavior and we're faulting in pages.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html