doc: fix crypto perf script guide
[dpdk.git] / doc / guides / tools / testeventdev.rst
index 79d0692..ad1788a 100644 (file)
@@ -1,32 +1,5 @@
-..  BSD LICENSE
-    Copyright(c) 2017 Cavium. All rights reserved.
-    All rights reserved.
-
-    Redistribution and use in source and binary forms, with or without
-    modification, are permitted provided that the following conditions
-    are met:
-
-    * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in
-    the documentation and/or other materials provided with the
-    distribution.
-    * Neither the name of Cavium nor the names of its
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
-
-    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2017 Cavium, Inc
 
 dpdk-test-eventdev Application
 ==============================
 
 dpdk-test-eventdev Application
 ==============================
@@ -37,19 +10,6 @@ This application has a generic framework to add new eventdev based test cases to
 verify functionality and measure the performance parameters of DPDK eventdev
 devices.
 
 verify functionality and measure the performance parameters of DPDK eventdev
 devices.
 
-Compiling the Application
--------------------------
-
-**Build the application**
-
-Execute the ``dpdk-setup.sh`` script to build the DPDK library together with the
-``dpdk-test-eventdev`` application.
-
-Initially, the user must select a DPDK target to choose the correct target type
-and compiler options to use when building the libraries.
-The user must have all libraries, modules, updates and compilers installed
-in the system prior to this,
-as described in the earlier chapters in this Getting Started Guide.
 
 Running the Application
 -----------------------
 
 Running the Application
 -----------------------
@@ -97,6 +57,8 @@ The following are the application command-line options:
          order_atq
          perf_queue
          perf_atq
          order_atq
          perf_queue
          perf_atq
+         pipeline_atq
+         pipeline_queue
 
 * ``--socket_id <n>``
 
 
 * ``--socket_id <n>``
 
@@ -106,10 +68,6 @@ The following are the application command-line options:
 
         Set the number of mbufs to be allocated from the mempool.
 
 
         Set the number of mbufs to be allocated from the mempool.
 
-* ``--slcore <n>``
-
-        Set the scheduler lcore id.(Valid when eventdev is not RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED capable)
-
 * ``--plcores <CORELIST>``
 
         Set the list of cores to be used as producers.
 * ``--plcores <CORELIST>``
 
         Set the list of cores to be used as producers.
@@ -150,6 +108,56 @@ The following are the application command-line options:
 
         Enable queue priority.
 
 
         Enable queue priority.
 
+* ``--prod_type_ethdev``
+
+        Use ethernet device as producer.
+
+* ``--prod_type_timerdev``
+
+        Use event timer adapter as producer.
+
+* ``--prod_type_timerdev_burst``
+
+       Use burst mode event timer adapter as producer.
+
+* ``--timer_tick_nsec``
+
+       Used to dictate number of nano seconds between bucket traversal of the
+       event timer adapter. Refer `rte_event_timer_adapter_conf`.
+
+* ``--max_tmo_nsec``
+
+       Used to configure event timer adapter max arm timeout in nano seconds.
+
+* ``--expiry_nsec``
+
+       Dictate the number of nano seconds after which the event timer expires.
+
+* ``--nb_timers``
+
+       Number of event timers each producer core will generate.
+
+* ``--nb_timer_adptrs``
+
+       Number of event timer adapters to be used. Each adapter is used in
+       round robin manner by the producer cores.
+
+* ``--deq_tmo_nsec``
+
+       Global dequeue timeout for all the event ports if the provided dequeue
+       timeout is out of the supported range of event device it will be
+       adjusted to the highest/lowest supported dequeue timeout supported.
+
+* ``--mbuf_sz``
+
+       Set packet mbuf size. Can be used to configure Jumbo Frames. Only
+       applicable for `pipeline_atq` and `pipeline_queue` tests.
+
+* ``--max_pkt_sz``
+
+       Set max packet mbuf size. Can be used configure Rx/Tx scatter gather.
+       Only applicable for `pipeline_atq` and `pipeline_queue` tests.
+
 
 Eventdev Tests
 --------------
 
 Eventdev Tests
 --------------
@@ -221,6 +229,7 @@ Supported application command line options are following::
    --nb_flows
    --nb_pkts
    --worker_deq_depth
    --nb_flows
    --nb_pkts
    --worker_deq_depth
+   --deq_tmo_nsec
 
 Example
 ^^^^^^^
 
 Example
 ^^^^^^^
@@ -229,7 +238,7 @@ Example command to run order queue test:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-   sudo build/app/dpdk-test-eventdev --vdev=event_sw0 -- \
+   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_sw0 -- \
                 --test=order_queue --plcores 1 --wlcores 2,3
 
 
                 --test=order_queue --plcores 1 --wlcores 2,3
 
 
@@ -283,6 +292,7 @@ Supported application command line options are following::
    --nb_flows
    --nb_pkts
    --worker_deq_depth
    --nb_flows
    --nb_pkts
    --worker_deq_depth
+   --deq_tmo_nsec
 
 Example
 ^^^^^^^
 
 Example
 ^^^^^^^
@@ -291,7 +301,7 @@ Example command to run order ``all types queue`` test:
 
 .. code-block:: console
 
 
 .. code-block:: console
 
-   sudo build/app/dpdk-test-eventdev --vdev=event_octeontx -- \
+   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_octeontx -- \
                         --test=order_atq --plcores 1 --wlcores 2,3
 
 
                         --test=order_atq --plcores 1 --wlcores 2,3
 
 
@@ -352,6 +362,10 @@ the timestamp in the event on the first stage and then on termination, it
 updates the number of cycles to forward a packet. The application uses this
 value to compute the average latency to a forward packet.
 
 updates the number of cycles to forward a packet. The application uses this
 value to compute the average latency to a forward packet.
 
+When ``--prod_type_ethdev`` command line option is selected, the application
+uses the probed ethernet devices as producers by configuring them as Rx
+adapters instead of using synthetic producers.
+
 Application options
 ^^^^^^^^^^^^^^^^^^^
 
 Application options
 ^^^^^^^^^^^^^^^^^^^
 
@@ -362,7 +376,6 @@ Supported application command line options are following::
         --test
         --socket_id
         --pool_sz
         --test
         --socket_id
         --pool_sz
-        --slcore (Valid when eventdev is not RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED capable)
         --plcores
         --wlcores
         --stlist
         --plcores
         --wlcores
         --stlist
@@ -371,15 +384,333 @@ Supported application command line options are following::
         --worker_deq_depth
         --fwd_latency
         --queue_priority
         --worker_deq_depth
         --fwd_latency
         --queue_priority
+        --prod_type_ethdev
+        --prod_type_timerdev_burst
+        --prod_type_timerdev
+        --timer_tick_nsec
+        --max_tmo_nsec
+        --expiry_nsec
+        --nb_timers
+        --nb_timer_adptrs
+        --deq_tmo_nsec
 
 Example
 ^^^^^^^
 
 Example command to run perf queue test:
 
 
 Example
 ^^^^^^^
 
 Example command to run perf queue test:
 
+.. code-block:: console
+
+   sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x1 --vdev=event_sw0 -- \
+        --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0
+
+Example command to run perf queue test with ethernet ports:
+
 .. code-block:: console
 
    sudo build/app/dpdk-test-eventdev --vdev=event_sw0 -- \
 .. code-block:: console
 
    sudo build/app/dpdk-test-eventdev --vdev=event_sw0 -- \
-        --test=perf_queue --slcore=1 --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0
+        --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --prod_type_ethdev
+
+Example command to run perf queue test with event timer adapter:
+
+.. code-block:: console
+
+   sudo  <build_dir>/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
+                --wlcores 4 --plcores 12 --test perf_queue --stlist=a \
+                --prod_type_timerdev --fwd_latency
+
+PERF_ATQ Test
+~~~~~~~~~~~~~~~
+
+This is a performance test case that aims at testing the following with
+``all types queue`` eventdev scheme.
+
+#. Measure the number of events can be processed in a second.
+#. Measure the latency to forward an event.
+
+.. _table_eventdev_perf_atq_test:
+
+.. table:: Perf all types queue test eventdev configuration.
+
+   +---+--------------+----------------+-----------------------------------------+
+   | # | Items        | Value          | Comments                                |
+   |   |              |                |                                         |
+   +===+==============+================+=========================================+
+   | 1 | nb_queues    | nb_producers   | Queues will be configured based on the  |
+   |   |              |                | user requested sched type list(--stlist)|
+   +---+--------------+----------------+-----------------------------------------+
+   | 2 | nb_producers | >= 1           | Selected through --plcores command line |
+   |   |              |                | argument.                               |
+   +---+--------------+----------------+-----------------------------------------+
+   | 3 | nb_workers   | >= 1           | Selected through --wlcores command line |
+   |   |              |                | argument                                |
+   +---+--------------+----------------+-----------------------------------------+
+   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n-1.         |
+   |   |              | nb_producers   | Producers use port n to port p          |
+   +---+--------------+----------------+-----------------------------------------+
+
+.. _figure_eventdev_perf_atq_test:
+
+.. figure:: img/eventdev_perf_atq_test.*
+
+   perf all types queue test operation.
+
+
+The ``all types queues(atq)`` perf test configures the eventdev with Q queues
+and P ports, where Q and P is a function of the number of workers and number of
+producers as mentioned in :numref:`table_eventdev_perf_atq_test`.
+
+
+The atq queue test functions as same as ``perf_queue`` test. The difference
+is, It uses, ``all type queue scheme`` instead of separate queues for each
+stage and thus reduces the number of queues required to realize the use case
+and enables flow pinning as the event does not move to the next queue.
+
+
+Application options
+^^^^^^^^^^^^^^^^^^^
+
+Supported application command line options are following::
+
+        --verbose
+        --dev
+        --test
+        --socket_id
+        --pool_sz
+        --plcores
+        --wlcores
+        --stlist
+        --nb_flows
+        --nb_pkts
+        --worker_deq_depth
+        --fwd_latency
+        --prod_type_ethdev
+        --prod_type_timerdev_burst
+        --prod_type_timerdev
+        --timer_tick_nsec
+        --max_tmo_nsec
+        --expiry_nsec
+        --nb_timers
+        --nb_timer_adptrs
+        --deq_tmo_nsec
+
+Example
+^^^^^^^
+
+Example command to run perf ``all types queue`` test:
+
+.. code-block:: console
+
+   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_octeontx -- \
+                --test=perf_atq --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0
+
+Example command to run perf ``all types queue`` test with event timer adapter:
+
+.. code-block:: console
+
+   sudo  <build_dir>/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
+                --wlcores 4 --plcores 12 --test perf_atq --verbose 20 \
+                --stlist=a --prod_type_timerdev --fwd_latency
+
+
+PIPELINE_QUEUE Test
+~~~~~~~~~~~~~~~~~~~
+
+This is a pipeline test case that aims at testing the following:
+
+#. Measure the end-to-end performance of an event dev with a ethernet dev.
+#. Maintain packet ordering from Rx to Tx.
 
 
+.. _table_eventdev_pipeline_queue_test:
+
+.. table:: Pipeline queue test eventdev configuration.
+
+   +---+--------------+----------------+-----------------------------------------+
+   | # | Items        | Value          | Comments                                |
+   |   |              |                |                                         |
+   +===+==============+================+=========================================+
+   | 1 | nb_queues    | (nb_producers  | Queues will be configured based on the  |
+   |   |              | * nb_stages) + | user requested sched type list(--stlist)|
+   |   |              | nb_producers   | At the last stage of the schedule list  |
+   |   |              |                | the event is enqueued onto per port     |
+   |   |              |                | unique queue which is then Transmitted. |
+   +---+--------------+----------------+-----------------------------------------+
+   | 2 | nb_producers | >= 1           | Producers will be configured based on   |
+   |   |              |                | the number of detected ethernet devices.|
+   |   |              |                | Each ethdev will be configured as an Rx |
+   |   |              |                | adapter.                                |
+   +---+--------------+----------------+-----------------------------------------+
+   | 3 | nb_workers   | >= 1           | Selected through --wlcores command line |
+   |   |              |                | argument                                |
+   +---+--------------+----------------+-----------------------------------------+
+   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n.           |
+   |   |              | (nb_produces * | Producers use port n+1 to port n+m,     |
+   |   |              | 2)             | depending on the Rx adapter capability. |
+   |   |              |                | Consumers use port n+m+1 to port n+o    |
+   |   |              |                | depending on the Tx adapter capability. |
+   +---+--------------+----------------+-----------------------------------------+
+
+.. _figure_eventdev_pipeline_queue_test_generic:
+
+.. figure:: img/eventdev_pipeline_queue_test_generic.*
+
+.. _figure_eventdev_pipeline_queue_test_internal_port:
+
+.. figure:: img/eventdev_pipeline_queue_test_internal_port.*
+
+   pipeline queue test operation.
+
+The pipeline queue test configures the eventdev with Q queues and P ports,
+where Q and P is a function of the number of workers, the number of producers
+and number of stages as mentioned in :numref:`table_eventdev_pipeline_queue_test`.
+
+The user can choose the number of workers and number of stages through the
+``--wlcores`` and the ``--stlist`` application command line arguments
+respectively.
+
+The number of producers depends on the number of ethernet devices detected and
+each ethernet device is configured as a event_eth_rx_adapter that acts as a
+producer.
+
+The producer(s) injects the events to eventdev based the first stage sched type
+list requested by the user through ``--stlist`` the command line argument.
+
+Based on the number of stages to process(selected through ``--stlist``),
+The application forwards the event to next upstream queue and when it reaches
+the last stage in the pipeline if the event type is ``atomic`` it is enqueued
+onto ethdev Tx queue else to maintain ordering the event type is set to
+``atomic`` and enqueued onto the last stage queue.
+
+If the ethdev and eventdev pair have ``RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT``
+capability then the worker cores enqueue the packets to the eventdev directly
+using ``rte_event_eth_tx_adapter_enqueue`` else the worker cores enqueue the
+packet onto the ``SINGLE_LINK_QUEUE`` that is managed by the Tx adapter.
+The Tx adapter dequeues the packet and transmits it.
+
+On packet Tx, application increments the number events processed and print
+periodically in one second to get the number of events processed in one
+second.
+
+
+Application options
+^^^^^^^^^^^^^^^^^^^
+
+Supported application command line options are following::
+
+        --verbose
+        --dev
+        --test
+        --socket_id
+        --pool_sz
+        --wlcores
+        --stlist
+        --worker_deq_depth
+        --prod_type_ethdev
+        --deq_tmo_nsec
+
+
+.. Note::
+
+    * The ``--prod_type_ethdev`` is mandatory for running this test.
+
+Example
+^^^^^^^
+
+Example command to run pipeline queue test:
+
+.. code-block:: console
+
+    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
+        --test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=a
+
+
+PIPELINE_ATQ Test
+~~~~~~~~~~~~~~~~~~~
+
+This is a pipeline test case that aims at testing the following with
+``all types queue`` eventdev scheme.
+
+#. Measure the end-to-end performance of an event dev with a ethernet dev.
+#. Maintain packet ordering from Rx to Tx.
+
+.. _table_eventdev_pipeline_atq_test:
+
+.. table:: Pipeline atq test eventdev configuration.
+
+   +---+--------------+----------------+-----------------------------------------+
+   | # | Items        | Value          | Comments                                |
+   |   |              |                |                                         |
+   +===+==============+================+=========================================+
+   | 1 | nb_queues    | nb_producers + | Queues will be configured based on the  |
+   |   |              | x              | user requested sched type list(--stlist)|
+   |   |              |                | where x = nb_producers in generic       |
+   |   |              |                | pipeline and 0 if all the ethdev        |
+   |   |              |                | being used have Internal port capability|
+   +---+--------------+----------------+-----------------------------------------+
+   | 2 | nb_producers | >= 1           | Producers will be configured based on   |
+   |   |              |                | the number of detected ethernet devices.|
+   |   |              |                | Each ethdev will be configured as an Rx |
+   |   |              |                | adapter.                                |
+   +---+--------------+----------------+-----------------------------------------+
+   | 3 | nb_workers   | >= 1           | Selected through --wlcores command line |
+   |   |              |                | argument                                |
+   +---+--------------+----------------+-----------------------------------------+
+   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n.           |
+   |   |              | nb_producers + | Producers use port n+1 to port n+m,     |
+   |   |              | x              | depending on the Rx adapter capability. |
+   |   |              |                | x = nb_producers in generic pipeline and|
+   |   |              |                | 0 if all the ethdev being used have     |
+   |   |              |                | Internal port capability.               |
+   |   |              |                | Consumers may use port n+m+1 to port n+o|
+   |   |              |                | depending on the Tx adapter capability. |
+   +---+--------------+----------------+-----------------------------------------+
+
+.. _figure_eventdev_pipeline_atq_test_generic:
+
+.. figure:: img/eventdev_pipeline_atq_test_generic.*
+
+.. _figure_eventdev_pipeline_atq_test_internal_port:
+
+.. figure:: img/eventdev_pipeline_atq_test_internal_port.*
+
+   pipeline atq test operation.
+
+The pipeline atq test configures the eventdev with Q queues and P ports,
+where Q and P is a function of the number of workers, the number of producers
+and number of stages as mentioned in :numref:`table_eventdev_pipeline_atq_test`.
+
+The atq queue test functions as same as ``pipeline_queue`` test. The difference
+is, It uses, ``all type queue scheme`` instead of separate queues for each
+stage and thus reduces the number of queues required to realize the use case.
+
+
+Application options
+^^^^^^^^^^^^^^^^^^^
+
+Supported application command line options are following::
+
+        --verbose
+        --dev
+        --test
+        --socket_id
+        --pool_sz
+        --wlcores
+        --stlist
+        --worker_deq_depth
+        --prod_type_ethdev
+        --deq_tmo_nsec
+
+
+.. Note::
+
+    * The ``--prod_type_ethdev`` is mandatory for running this test.
+
+Example
+^^^^^^^
+
+Example command to run pipeline queue test:
+
+.. code-block:: console
 
 
+    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
+        --test=pipeline_atq --wlcore=1 --prod_type_ethdev --stlist=a