Hi Ilya,

Some more suggestions below to expand a bit on the use cases for 
tx-flush-interval.

BR, Jan

> -----Original Message-----
> From: Ilya Maximets [mailto:[email protected]]
> Sent: Tuesday, 12 December, 2017 14:07
> To: [email protected]; Bhanuprakash Bodireddy 
> <[email protected]>
> Cc: Heetae Ahn <[email protected]>; Antonio Fischetti 
> <[email protected]>; Eelco Chaudron
> <[email protected]>; Ciara Loftus <[email protected]>; Kevin Traynor 
> <[email protected]>; Jan Scheurich
> <[email protected]>; Ian Stokes <[email protected]>; Ilya 
> Maximets <[email protected]>
> Subject: [RFC v2] docs: Describe output packet batching in DPDK guide.
> 
> Added information about output packet batching and a way to
> configure 'tx-flush-interval'.
> 
> Signed-off-by: Ilya Maximets <[email protected]>
> ---
> 
> Version 2:
>       * Some grammar/wording corrections. (Eelco Chaudron)
> 
>  Documentation/intro/install/dpdk.rst | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/Documentation/intro/install/dpdk.rst 
> b/Documentation/intro/install/dpdk.rst
> index 3fecb5c..5485dbc 100644
> --- a/Documentation/intro/install/dpdk.rst
> +++ b/Documentation/intro/install/dpdk.rst
> @@ -568,6 +568,30 @@ not needed i.e. jumbo frames are not needed, it can be 
> forced off by adding
>  chains of descriptors it will make more individual virtio descriptors 
> available
>  for rx to the guest using dpdkvhost ports and this can improve performance.
> 
> +Output Packet Batching
> +~~~~~~~~~~~~~~~~~~~~~~
> +
> +To get advantages of the batched send functions OVS collects packets in
> +intermediate queues before sending. This allows using a single send for
> +packets matched by different flows but having the same output action.
> +Furthermore, OVS is able to collect packets for some reasonable amount of 
> time
> +before batch sending them which might help when input batches are small.

To make advantage of batched transmit functions, OVS collects packets in
intermediate queues before sending when processing a batch of received
packets. Even if packets are matched by different flows, OVS uses a single
send operation for all packets destined to the same output port.

Furthermore, OVS is able to buffer packets in these intermediate queues for a
configurable amount of time to reduce the frequency of send bursts at medium 
load levels when the packet receive rate is high, but the receive batch size 
still
very small. This is particularly beneficial for packets transmitted to VMs 
using an 
interrupt-driven virtio driver, where the interrupt overhead is significant for 
the
OVS PMD, the host operating system and the guest driver.

> +
> +``tx-flush-interval`` config could be used to specify the time in 
> microseconds
> +that a packet can wait in an output queue for sending (default is ``0``)::

The ``tx-flush-interval`` parameter can be used to specify the time in 
microseconds OVS should wait between two send bursts to a given port (default 
is ``0``). When the intermediate queue fills up before that time is over, the 
buffered packet batch is sent immediately::

> +
> +    $ ovs-vsctl set Open_vSwitch . other_config:tx-flush-interval=50
> +
> +Lower values decrease latency while higher values may be useful to achieve
> +higher performance. For example, increasing of ``tx-flush-interval`` can be
> +used to decrease the number of interrupts for interrupt based guest drivers.
> +This may significantly affect the performance. Zero value means immediate
> +send at the end of processing a single input batch.

This parameter influences both throughput and latency, depending on the traffic 
load on the port. In general lower values decrease latency while higher values 
may be useful to achieve higher throughput.

Low traffic (packet rate < 1/tx-flush-interval) should not experience any 
significant latency or throughput increase as packets are forwarded immediately.

At intermediate load levels (1/tx-flush-interval < packet rate < 
32/tx-flush-interval) traffic should experience an average latency increase of 
up to 1/2 * tx-flush-interval and a throughput improvement that depends on the 
average size of send bursts and grows with the traffic rate.

Very high traffic (packet rate >> 32/tx-flush-interval) should experience 
improved throughput as most send batches contain the maximum number of packets 
(32). The average latency increase should equal 32/(2 * packet rate).

A tx-burst-interval value of 50 microseconds has shown to provide a good 
performance increase for interrupt-driven guests while keeping the latency 
increase at a reasonable level.

> +
> +Average number of packets per output batch could be checked in PMD stats::

The average number of packets per output batch can be checked in PMD stats::

> +
> +    $ ovs-appctl dpif-netdev/pmd-stats-show
> +
>  Limitations
>  ------------
> 
> --
> 2.7.4

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

Reply via email to