[ovs-discuss] Potential OVS+OpenStack Kilo issue

Joe Stringer joestringer at nicira.com
Thu Apr 16 21:44:30 UTC 2015

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:

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 ;-)


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


Are there some OpenStack people out there that could clarify whether
this is a problem and if it's being addressed?

More information about the discuss mailing list