
On Tue, 2008-11-18 at 14:57 +0000, Daniel P. Berrange wrote:
On Mon, Nov 17, 2008 at 06:39:45PM -0800, Chris Wright wrote:
Below is a simple PoC for setting a large MTU size on a tap device. With this we are able to improve net i/o throughput substantially (~40% improvement on TX and ~130% improvement on RX). This is just RFC because it's hardcoded to an MTU of 9000 for any tap device. Thoughts on the best way to add this kind of support?
Well if we want it to be configurable per guest then we'd add it to the XML, in the <target> device field, alongside the VIF name, eg
<interface type='network'> <source network='default'/> <target dev='vnet7' mtu='9000'/> <mac address="11:22:33:44:55:66"/> </interface>
Yeah, I was just about to suggest that.
libvirt can handle this stuff directly for QEMU and LXC drivers but for Xen, VIF setup is done by an /etc/xen/scripts/vif-bridge script. AFAIK, XenD has no config param for MTU, but there's no reason we can't write a patch for XenD to accept an MTU param and pass that through to vif-bridge. If large MTUs are useful for Xen's netback of course...
If we don't need this configurable, is there any downside to setting a MTU of 9000 for all TAP devices we create. I assume that PTMUD will ensure that the guest only sends packets <= 1500 if the physical NIC connected to the bridge doesn't have such a large MTU, or if the guest doesn't do PMTUD, then the bridge code will do fragementation as needed ?
My take on it is that it needs to be an opt in thing - if path MTU discovery was sufficient to deal with all cases then we'd probably have an mtu > 1500 everywhere ... Herbert? Cheers, Mark.