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.

[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



Testing of 'PVP with OVS bonding on phy ports' scenario shows significant 
performance
improvement up to +25%:

        https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/341700.html

Other testing results for v6:

        https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/341605.html
        https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/341628.html


Version 8:
        * Minor rebase on top of current master.

Version 7:
        * Rebased on current istokes/dpdk_merge (3eb8d4f)
        * Dropped dp_netdev_pmd_thread structure refactoring patch.
          Not needed since revert applied.

Version 6:
        * Rebased on current master:
          - Added new patch to refactor dp_netdev_pmd_thread structure
            according to following suggestion:
            
https://mail.openvswitch.org/pipermail/ovs-dev/2017-November/341230.html

          NOTE: I still prefer reverting of the padding related patch.
                Rebase done to not block acepting of this series.
                Revert patch and discussion here:
                
https://mail.openvswitch.org/pipermail/ovs-dev/2017-November/341153.html

        * Added comment about pmd_thread_ctx_time_update() usage.

Version 5:
        * pmd_thread_ctx_time_update() calls moved to different places to
          call them only from dp_netdev_process_rxq_port() and main
          polling functions:
                pmd_thread_main, dpif_netdev_run and dpif_netdev_execute.
          All other functions should use cached time from pmd->ctx.now.
          It's guaranteed to be updated at least once per polling cycle.
        * 'may_steal' patch returned to version from v3 because
          'may_steal' in qos is a completely different variable. This
          patch only removes 'may_steal' from netdev API.
        * 2 more usec functions added to timeval to have complete public API.
        * Checking of 'output_cnt' turned to assertion.

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 (6):
  dpif-netdev: Keep latest measured time for PMD thread.
  dpif-netdev: Output packet batching.
  netdev: Remove unused may_steal.
  netdev: Remove useless cutlen.
  dpif-netdev: Time based output batching.
  dpif-netdev: Count sent packets and batches.

 lib/dpif-netdev.c     | 350 ++++++++++++++++++++++++++++++++++++++------------
 lib/netdev-bsd.c      |   6 +-
 lib/netdev-dpdk.c     |  30 ++---
 lib/netdev-dummy.c    |   6 +-
 lib/netdev-linux.c    |   8 +-
 lib/netdev-provider.h |   7 +-
 lib/netdev.c          |  12 +-
 lib/netdev.h          |   2 +-
 vswitchd/vswitch.xml  |  16 +++
 9 files changed, 312 insertions(+), 125 deletions(-)

-- 
2.7.4

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

Reply via email to