[ovs-dev] [PATCH v4 0/7] Output packet batching.

Eelco Chaudron echaudro at redhat.com
Wed Oct 11 08:47:48 UTC 2017


Hi Ilya,

Sorry for the late response, as I was rather busy and did not find time 
to look
at your revisions 1 till 3. Hopefully, I can make it up looking at v4...

I did some tests in-line with the earlier tests I did with Bhanu's patch 
series.
Here is a comparison for a simple PVP test using a single physical port 
with 64
bytes packets (wire speed 10G), single PMD thread:

#Flows  master     patched
======  =========  =========
     10  3,123,350  4,174,807  pps
     32  2,090,440  3,625,314  pps
     50  1,954,184  3,499,402  pps
    100  1,705,794  3,264,955  pps
    500  1,601,252  2,956,190  pps
   1000  1,568,175  2,712,385  pps

In addition, I did some latency statistics based on a PVP setup with two
physical ports, and one virtual port, and two OpenFlow rules:

ovs-ofctl add-flow br0 "in_port=dpdk0,action=vhost0"
ovs-ofctl add-flow br0 "in_port=vhost0,action=dpdk1"

Also, note that there is some deviation on latency numbers, so I did 4 
runs and
reported the min-max values.

First the master results:

Summary (flows = 30, 10G line rate = 95%, runtime = 60 seconds):

   Pkt size     min(ns)     avg(ns)          max(ns)
   --------  -------------  ---------------  -----------------
        512  7,437 - 7,469  11,416 - 13,770   99,395 - 112,296
       1024  7,197 - 7,221  11,277 - 12,379   42,876 -  47,230
       1280  7,373 - 7,549  10,647 - 12,528   37,240 -  42,235
       1518  8,046 - 8,135  11,808 - 12,931   36,534 -  46,388

And the patched results:

   Pkt size     min(ns)     avg(ns)          max(ns)
   --------  -------------  ---------------  -----------------
        512  7,605 - 7,662  11,711 - 14,053   56,603 - 121,059
       1024  7,285 - 7,317  11,291 - 12,695   44,753 -  69,624
       1280  7,605 - 7,702  10,842 - 12,685   37,047 -  45,747
       1518  8,111 - 8,159  11,434 - 13,045   38,587 -  41,754

As you can see above for the default configuration there is a minimal 
latency
increase. I assume you did some latency tests yourself, and I hope these
numbers match your findings...

I do have some small comments on your patchsets but will address them 
replying
to the individual emails.

Cheers,

Eelco

On 05/10/17 17:05, Ilya Maximets wrote:
> This patch-set inspired by [1] from Bhanuprakash Bodireddy.
> Implementation of [1] looks very complex and introduces many pitfalls [2]
> for later code modifications like possible packet stucks.
>
> This version targeted to make simple and flexible output packet batching on
> higher level without introducing and even simplifying netdev layer.
>
> Basic testing of 'PVP with OVS bonding on phy ports' scenario shows
> significant performance improvement.
>
> Test results for time-based batching for v3:
> https://mail.openvswitch.org/pipermail/ovs-dev/2017-September/338247.html
>
> [1] [PATCH v4 0/5] netdev-dpdk: Use intermediate queue during packet transmission.
>      https://mail.openvswitch.org/pipermail/ovs-dev/2017-August/337019.html
>
> [2] For example:
>      https://mail.openvswitch.org/pipermail/ovs-dev/2017-August/337133.html
>
> Version 4:
> 	* Rebased on current master.
> 	* Rebased on top of "Keep latest measured time for PMD thread."
> 	  (Jan Scheurich)
> 	* Microsecond resolution related patches integrated.
> 	* Time-based batching without RFC tag.
> 	* 'output_time' renamed to 'flush_time'. (Jan Scheurich)
> 	* 'flush_time' update moved to 'dp_netdev_pmd_flush_output_on_port'.
> 	  (Jan Scheurich)
> 	* 'output-max-latency' renamed to 'tx-flush-interval'.
> 	* Added patch for output batching statistics.
>
> Version 3:
>
> 	* Rebased on current master.
> 	* Time based RFC: fixed assert on n_output_batches <= 0.
>
> Version 2:
>
> 	* Rebased on current master.
> 	* Added time based batching RFC patch.
> 	* Fixed mixing packets with different sources in same batch.
>
>
> Ilya Maximets (7):
>    dpif-netdev: Keep latest measured time for PMD thread.
>    dpif-netdev: Output packet batching.
>    netdev: Remove unused may_steal.
>    netdev: Remove useless cutlen.
>    timeval: Introduce time_usec().
>    dpif-netdev: Time based output batching.
>    dpif-netdev: Count sent packets and batches.
>
>   lib/dpif-netdev.c     | 334 +++++++++++++++++++++++++++++++++++++-------------
>   lib/netdev-bsd.c      |   6 +-
>   lib/netdev-dpdk.c     |  70 ++++-------
>   lib/netdev-dummy.c    |   6 +-
>   lib/netdev-linux.c    |   8 +-
>   lib/netdev-provider.h |   7 +-
>   lib/netdev.c          |  12 +-
>   lib/netdev.h          |   2 +-
>   lib/timeval.c         |  22 ++++
>   lib/timeval.h         |   2 +
>   vswitchd/vswitch.xml  |  16 +++
>   11 files changed, 336 insertions(+), 149 deletions(-)
>



More information about the dev mailing list