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


_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to