I had a lengthy discussion with someone in IRC last night who observed some odd behaviour in OVS-2.3 userspace + module from Linux-3.16. It seems like if OVS >= 2.3 is paired with OVS module from Linux <= 3.16, then only one handler thread will handle traffic even if multiple such threads exist. This limits the performance of OVS particularly under high load.
Prior to OVS-2.3 we had a dispatcher thread which distributed the misses to multiple handler threads, but in 2.3 we shifted the equivalent logic into the kernel. I understand that the requisite patch for this functionality was merged in Linux-3.17: https://github.com/torvalds/linux/commit/5cd667b0a4567048bb555927d6ee564f4e5620a9 For the most part, I don't think this is an issue because major distros haven't shipped OVS-2.3 yet. Hopefully by the time they do they will have recent kernels or will recommend dkms module. For instance, Ubuntu 15.04 looks like it will have Linux-3.19. Using the OVS module from this version should not exhibit this problem. My main concern is whether this issue has been raised in OpenStack, as it appears that the Kilo release (imminent) is expected to run against Ubuntu 14.04, but there is no updated kernel or newer OVS kernel module in Ubuntu Cloud Archive (launchpad summary of packages below). If Ubuntu 14.04.3 hardware enablement stack is required then this issue should not be present [as it would presumably use the 15.04 kernel]. If an openvswitch-datapath-dkms package for OVS-2.3 is distributed with the Ubuntu Cloud Archive, then users can be recommended to use the dkms module. If users run on a single-core machine, there'll be no problem ;-) https://launchpad.net/~ubuntu-cloud-archive/+archive/ubuntu/kilo-staging I reproduced this today using Ubuntu Cloud Archive paired with Ubuntu 14.10, but it is equally applicable to Ubuntu 14.04 LTS. Steps to reproduce: - Install Ubuntu 14.04.2 - Add ubuntu cloud archive for OpenStack Kilo[url below] - Install openvswitch-switch - Add bridge, interface - ovs-vsctl set Open_vSwitch . n-handler-threads 3 - ovs-appctl upcall/disable-megaflows (To produce lots of misses) - hping3 --flood - Observe that only one handler thread handles misses http://lists.openstack.org/pipermail/openstack-dev/2015-January/054820.html Are there some OpenStack people out there that could clarify whether this is a problem and if it's being addressed? _______________________________________________ discuss mailing list [email protected] http://openvswitch.org/mailman/listinfo/discuss
