[ovs-dev] [PATCH v11 0/5] Output packet batching (Time-based).
Ilya Maximets
i.maximets at samsung.com
Mon Jan 15 10:20:50 UTC 2018
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
The most of the series already in merged and not included in v9 and later
versions.
Testing of 'PVP with OVS bonding on phy ports' scenario shows significant
performance improvement up to +25% (v9 has no performance difference with v6 here):
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 11:
* Minor comment update about distribution of the send cycles in patch #2.
Version 10:
* Rebased on top of '[PATCH v8 0/2] Refactor PMD stats and cycle counting':
https://mail.openvswitch.org/pipermail/ovs-dev/2018-January/343008.html
* Per-rxq cycles accounting changed to use new nested counters.
Version 9:
* Made on top of current DPDK_MERGE tree (cc4891f).
* Patches 1-4,6 from v8 dropped as already included in DPDK_MERGE.
* "Time based ..." patch updated with per-rxq cycles counting from
the following incremental:
https://mail.openvswitch.org/pipermail/ovs-dev/2017-December/342255.html
and splitted into 3 logically separate parts for easier review purposes:
1. Microsecond granularity for dpif-netdev.
2. Cycles accounting changes.
3. Time based batching itself.
There was no code changes in comparing with v8 + Incremental, only re-split.
* Output batching mentioned in NEWS.
* Documentation patch included in this series.
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 (5):
dpif-netdev: Use microsecond granularity.
dpif-netdev: Count cycles on per-rxq basis.
dpif-netdev: Time based output batching.
docs: Describe output packet batching in DPDK guide.
NEWS: Mark output packet batching support.
Documentation/intro/install/dpdk.rst | 58 ++++++++++++
NEWS | 2 +
lib/dpif-netdev.c | 165 +++++++++++++++++++++++++++--------
vswitchd/vswitch.xml | 16 ++++
4 files changed, 205 insertions(+), 36 deletions(-)
--
2.7.4
More information about the dev
mailing list