[openstack-dev] [Neutron] OVS flow modification performance
Kevin Benton
blak111 at gmail.com
Mon Jan 18 05:42:32 UTC 2016
Thanks for doing this. A couple of questions:
What were your rootwrap settings when running these tests? Did you just
have it calling sudo directly?
Also, you mention that this is only ~10% of the time spent during flow
reconfiguration. What other areas are eating up so much time?
Cheers,
Kevin Benton
On Sun, Jan 17, 2016 at 10:12 PM, IWAMOTO Toshihiro <iwamoto at valinux.co.jp>
wrote:
> I'm sending out this mail to share the finding and discuss how to
> improve with those interested in neutron ovs performance.
>
> TL;DR: The native of_interface code, which has been merged recently
> and isn't default, seems to consume less CPU time but gives a mixed
> result. I'm looking into this for improvement.
>
> * Introduction
>
> With an ML2+ovs Neutron configuration, openflow rule modification
> happens often and is somewhat a heavy operation as it involves
> exec() of the ovs-ofctl command.
>
> The native of_interface driver doesn't use the ovs-ofctl command and
> should have less performance impact on the system. This document
> tries to confirm this hypothesis.
>
>
> * Method
>
> In order to focus on openflow rule operation time and avoid noise from
> other operations (VM boot-up, etc.), neutron-openvswitch-agent was
> restarted and the time it took to reconfigure the flows was measured.
>
> 1. Use devstack to start a test environment. As debug logs generate
> considable amount of load, ENABLE_DEBUG_LOG_LEVEL was set to false.
> 2. Apply https://review.openstack.org/#/c/267905/ to enable
> measurement of flow reconfiguration times.
> 3. Boot 80 m1.nano instances. In my setup, this generates 404 br-int
> flows. If you have >16G RAM, more could be booted.
> 4. Stop neutron-openvswitch-agent and restart with --run-once arg.
> Use time, oprofile, and python's cProfile (use --profile arg) to
> collect data.
>
> * Results
>
> Execution time (averages of 3 runs):
>
> native 28.3s user 2.9s sys 0.4s
> ovs-ofctl 25.7s user 2.2s sys 0.3s
>
> ovs-ofctl runs faster and seems to use less CPU, but the above doesn't
> count in execution time of ovs-ofctl.
>
> Oprofile data collected by running "operf -s -t" contain the
> information.
>
> With of_interface=native config, "opreport tgid:<pid of ovs agent>" shows:
>
> samples| %|
> ------------------
> 87408 100.000 python2.7
> CPU_CLK_UNHALT...|
> samples| %|
> ------------------
> 69160 79.1232 python2.7
> 8416 9.6284 vmlinux-3.13.0-24-generic
>
> and "opreport --merge tgid" doesn't show ovs-ofctl.
>
> With of_interface=ovs-ofctl, "opreport tgid:<pid of ovs agent>" shows:
>
> samples| %|
> ------------------
> 62771 100.000 python2.7
> CPU_CLK_UNHALT...|
> samples| %|
> ------------------
> 49418 78.7274 python2.7
> 6483 10.3280 vmlinux-3.13.0-24-generic
>
> and "opreport --merge tgid" shows CPU consumption by ovs-ofctl
>
> 35774 3.5979 ovs-ofctl
> CPU_CLK_UNHALT...|
> samples| %|
> ------------------
> 28219 78.8813 vmlinux-3.13.0-24-generic
> 3487 9.7473 ld-2.19.so
> 2301 6.4320 ovs-ofctl
>
> Comparing 87408 (native python) with 62771+35774, the native
> of_interface uses 0.4s less CPU time overall.
>
> * Conclusion and future steps
>
> The native of_interface uses slightly less CPU time but takes longer
> time to complete a flow reconfiguration after an agent restart.
>
> As an OVS agent accounts for only 1/10th of total CPU usage during a
> flow reconfiguration (data not shown), there may be other areas for
> improvement.
>
> The cProfile Python module gives more fine grained data, but no
> apparent performance bottleneck was found. The data show more
> eventlet context switches with the native of_interface, which is due
> to how the native of_interface is written. I'm looking into for
> improving CPU usage and latency.
>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
--
Kevin Benton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20160118/db6ac023/attachment.html>
More information about the OpenStack-dev
mailing list