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

Ilya Maximets i.maximets at samsung.com
Fri Oct 27 16:19:40 UTC 2017


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

Test results for v4:
https://mail.openvswitch.org/pipermail/ovs-dev/2017-October/339624.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 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 (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: Add functions with microsecond granularity.
  dpif-netdev: Time based output batching.
  dpif-netdev: Count sent packets and batches.

 lib/dpif-netdev.c     | 335 +++++++++++++++++++++++++++++++++++++-------------
 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 +-
 lib/timeval.c         |  35 ++++++
 lib/timeval.h         |   4 +
 vswitchd/vswitch.xml  |  16 +++
 11 files changed, 336 insertions(+), 125 deletions(-)

-- 
2.7.4



More information about the dev mailing list