xref: /f-stack/dpdk/doc/guides/tools/testeventdev.rst (revision 2d9fd380)
1d30ea906Sjfb8856606..  SPDX-License-Identifier: BSD-3-Clause
2d30ea906Sjfb8856606    Copyright(c) 2017 Cavium, Inc
32bfe3f2eSlogwang
42bfe3f2eSlogwangdpdk-test-eventdev Application
52bfe3f2eSlogwang==============================
62bfe3f2eSlogwang
72bfe3f2eSlogwangThe ``dpdk-test-eventdev`` tool is a Data Plane Development Kit (DPDK)
82bfe3f2eSlogwangapplication that allows exercising various eventdev use cases.
92bfe3f2eSlogwangThis application has a generic framework to add new eventdev based test cases to
102bfe3f2eSlogwangverify functionality and measure the performance parameters of DPDK eventdev
112bfe3f2eSlogwangdevices.
122bfe3f2eSlogwang
132bfe3f2eSlogwang
142bfe3f2eSlogwangRunning the Application
152bfe3f2eSlogwang-----------------------
162bfe3f2eSlogwang
172bfe3f2eSlogwangThe application has a number of command line options:
182bfe3f2eSlogwang
192bfe3f2eSlogwang.. code-block:: console
202bfe3f2eSlogwang
212bfe3f2eSlogwang   dpdk-test-eventdev [EAL Options] -- [application options]
222bfe3f2eSlogwang
232bfe3f2eSlogwangEAL Options
242bfe3f2eSlogwang~~~~~~~~~~~
252bfe3f2eSlogwang
262bfe3f2eSlogwangThe following are the EAL command-line options that can be used in conjunction
272bfe3f2eSlogwangwith the ``dpdk-test-eventdev`` application.
282bfe3f2eSlogwangSee the DPDK Getting Started Guides for more information on these options.
292bfe3f2eSlogwang
302bfe3f2eSlogwang*   ``-c <COREMASK>`` or ``-l <CORELIST>``
312bfe3f2eSlogwang
322bfe3f2eSlogwang        Set the hexadecimal bitmask of the cores to run on. The corelist is a
332bfe3f2eSlogwang        list of cores to use.
342bfe3f2eSlogwang
352bfe3f2eSlogwang*   ``--vdev <driver><id>``
362bfe3f2eSlogwang
372bfe3f2eSlogwang        Add a virtual eventdev device.
382bfe3f2eSlogwang
392bfe3f2eSlogwangApplication Options
402bfe3f2eSlogwang~~~~~~~~~~~~~~~~~~~
412bfe3f2eSlogwang
422bfe3f2eSlogwangThe following are the application command-line options:
432bfe3f2eSlogwang
442bfe3f2eSlogwang* ``--verbose``
452bfe3f2eSlogwang
462bfe3f2eSlogwang        Set verbose level. Default is 1. Value > 1 displays more details.
472bfe3f2eSlogwang
482bfe3f2eSlogwang* ``--dev <n>``
492bfe3f2eSlogwang
502bfe3f2eSlogwang        Set the device id of the event device.
512bfe3f2eSlogwang
522bfe3f2eSlogwang* ``--test <name>``
532bfe3f2eSlogwang
542bfe3f2eSlogwang        Set test name, where ``name`` is one of the following::
552bfe3f2eSlogwang
562bfe3f2eSlogwang         order_queue
572bfe3f2eSlogwang         order_atq
582bfe3f2eSlogwang         perf_queue
592bfe3f2eSlogwang         perf_atq
60d30ea906Sjfb8856606         pipeline_atq
61d30ea906Sjfb8856606         pipeline_queue
622bfe3f2eSlogwang
632bfe3f2eSlogwang* ``--socket_id <n>``
642bfe3f2eSlogwang
652bfe3f2eSlogwang        Set the socket id of the application resources.
662bfe3f2eSlogwang
672bfe3f2eSlogwang* ``--pool-sz <n>``
682bfe3f2eSlogwang
692bfe3f2eSlogwang        Set the number of mbufs to be allocated from the mempool.
702bfe3f2eSlogwang
712bfe3f2eSlogwang* ``--plcores <CORELIST>``
722bfe3f2eSlogwang
732bfe3f2eSlogwang        Set the list of cores to be used as producers.
742bfe3f2eSlogwang
752bfe3f2eSlogwang* ``--wlcores <CORELIST>``
762bfe3f2eSlogwang
772bfe3f2eSlogwang        Set the list of cores to be used as workers.
782bfe3f2eSlogwang
792bfe3f2eSlogwang* ``--stlist <type_list>``
802bfe3f2eSlogwang
812bfe3f2eSlogwang        Set the scheduled type of each stage where ``type_list`` size
822bfe3f2eSlogwang        determines the number of stages used in the test application.
832bfe3f2eSlogwang        Each type_list member can be one of the following::
842bfe3f2eSlogwang
852bfe3f2eSlogwang            P or p : Parallel schedule type
862bfe3f2eSlogwang            O or o : Ordered schedule type
872bfe3f2eSlogwang            A or a : Atomic schedule type
882bfe3f2eSlogwang
892bfe3f2eSlogwang        Application expects the ``type_list`` in comma separated form (i.e. ``--stlist o,a,a,a``)
902bfe3f2eSlogwang
912bfe3f2eSlogwang* ``--nb_flows <n>``
922bfe3f2eSlogwang
932bfe3f2eSlogwang        Set the number of flows to produce.
942bfe3f2eSlogwang
952bfe3f2eSlogwang* ``--nb_pkts <n>``
962bfe3f2eSlogwang
972bfe3f2eSlogwang        Set the number of packets to produce. 0 implies no limit.
982bfe3f2eSlogwang
992bfe3f2eSlogwang* ``--worker_deq_depth <n>``
1002bfe3f2eSlogwang
1012bfe3f2eSlogwang        Set the dequeue depth of the worker.
1022bfe3f2eSlogwang
1032bfe3f2eSlogwang* ``--fwd_latency``
1042bfe3f2eSlogwang
1052bfe3f2eSlogwang        Perform forward latency measurement.
1062bfe3f2eSlogwang
1072bfe3f2eSlogwang* ``--queue_priority``
1082bfe3f2eSlogwang
1092bfe3f2eSlogwang        Enable queue priority.
1102bfe3f2eSlogwang
111d30ea906Sjfb8856606* ``--prod_type_ethdev``
112d30ea906Sjfb8856606
113d30ea906Sjfb8856606        Use ethernet device as producer.
114d30ea906Sjfb8856606
115d30ea906Sjfb8856606* ``--prod_type_timerdev``
116d30ea906Sjfb8856606
117d30ea906Sjfb8856606        Use event timer adapter as producer.
118d30ea906Sjfb8856606
119d30ea906Sjfb8856606* ``--prod_type_timerdev_burst``
120d30ea906Sjfb8856606
121d30ea906Sjfb8856606       Use burst mode event timer adapter as producer.
122d30ea906Sjfb8856606
123d30ea906Sjfb8856606* ``--timer_tick_nsec``
124d30ea906Sjfb8856606
125d30ea906Sjfb8856606       Used to dictate number of nano seconds between bucket traversal of the
126d30ea906Sjfb8856606       event timer adapter. Refer `rte_event_timer_adapter_conf`.
127d30ea906Sjfb8856606
128d30ea906Sjfb8856606* ``--max_tmo_nsec``
129d30ea906Sjfb8856606
130d30ea906Sjfb8856606       Used to configure event timer adapter max arm timeout in nano seconds.
131d30ea906Sjfb8856606
132d30ea906Sjfb8856606* ``--expiry_nsec``
133d30ea906Sjfb8856606
134d30ea906Sjfb8856606       Dictate the number of nano seconds after which the event timer expires.
135d30ea906Sjfb8856606
136d30ea906Sjfb8856606* ``--nb_timers``
137d30ea906Sjfb8856606
138d30ea906Sjfb8856606       Number of event timers each producer core will generate.
139d30ea906Sjfb8856606
140d30ea906Sjfb8856606* ``--nb_timer_adptrs``
141d30ea906Sjfb8856606
142d30ea906Sjfb8856606       Number of event timer adapters to be used. Each adapter is used in
143d30ea906Sjfb8856606       round robin manner by the producer cores.
1442bfe3f2eSlogwang
1454418919fSjohnjiang* ``--deq_tmo_nsec``
1464418919fSjohnjiang
1474418919fSjohnjiang       Global dequeue timeout for all the event ports if the provided dequeue
1484418919fSjohnjiang       timeout is out of the supported range of event device it will be
1494418919fSjohnjiang       adjusted to the highest/lowest supported dequeue timeout supported.
1504418919fSjohnjiang
1514418919fSjohnjiang* ``--mbuf_sz``
1524418919fSjohnjiang
1534418919fSjohnjiang       Set packet mbuf size. Can be used to configure Jumbo Frames. Only
1544418919fSjohnjiang       applicable for `pipeline_atq` and `pipeline_queue` tests.
1554418919fSjohnjiang
1564418919fSjohnjiang* ``--max_pkt_sz``
1574418919fSjohnjiang
1584418919fSjohnjiang       Set max packet mbuf size. Can be used configure Rx/Tx scatter gather.
1594418919fSjohnjiang       Only applicable for `pipeline_atq` and `pipeline_queue` tests.
1604418919fSjohnjiang
1614418919fSjohnjiang
1622bfe3f2eSlogwangEventdev Tests
1632bfe3f2eSlogwang--------------
1642bfe3f2eSlogwang
1652bfe3f2eSlogwangORDER_QUEUE Test
1662bfe3f2eSlogwang~~~~~~~~~~~~~~~~
1672bfe3f2eSlogwang
1682bfe3f2eSlogwangThis is a functional test case that aims at testing the following:
1692bfe3f2eSlogwang
1702bfe3f2eSlogwang#. Verify the ingress order maintenance.
1712bfe3f2eSlogwang#. Verify the exclusive(atomic) access to given atomic flow per eventdev port.
1722bfe3f2eSlogwang
1732bfe3f2eSlogwang.. _table_eventdev_order_queue_test:
1742bfe3f2eSlogwang
1752bfe3f2eSlogwang.. table:: Order queue test eventdev configuration.
1762bfe3f2eSlogwang
1772bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
1782bfe3f2eSlogwang   | # | Items        | Value          | Comments               |
1792bfe3f2eSlogwang   |   |              |                |                        |
1802bfe3f2eSlogwang   +===+==============+================+========================+
1812bfe3f2eSlogwang   | 1 | nb_queues    | 2              | q0(ordered), q1(atomic)|
1822bfe3f2eSlogwang   |   |              |                |                        |
1832bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
1842bfe3f2eSlogwang   | 2 | nb_producers | 1              |                        |
1852bfe3f2eSlogwang   |   |              |                |                        |
1862bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
1872bfe3f2eSlogwang   | 3 | nb_workers   | >= 1           |                        |
1882bfe3f2eSlogwang   |   |              |                |                        |
1892bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
1902bfe3f2eSlogwang   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to  |
1912bfe3f2eSlogwang   |   |              | 1              | port n-1. Producer uses|
1922bfe3f2eSlogwang   |   |              |                | port n                 |
1932bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
1942bfe3f2eSlogwang
1952bfe3f2eSlogwang.. _figure_eventdev_order_queue_test:
1962bfe3f2eSlogwang
1972bfe3f2eSlogwang.. figure:: img/eventdev_order_queue_test.*
1982bfe3f2eSlogwang
1992bfe3f2eSlogwang   order queue test operation.
2002bfe3f2eSlogwang
2012bfe3f2eSlogwangThe order queue test configures the eventdev with two queues and an event
2022bfe3f2eSlogwangproducer to inject the events to q0(ordered) queue. Both q0(ordered) and
2032bfe3f2eSlogwangq1(atomic) are linked to all the workers.
2042bfe3f2eSlogwang
2052bfe3f2eSlogwangThe event producer maintains a sequence number per flow and injects the events
2062bfe3f2eSlogwangto the ordered queue. The worker receives the events from ordered queue and
2072bfe3f2eSlogwangforwards to atomic queue. Since the events from an ordered queue can be
2082bfe3f2eSlogwangprocessed in parallel on the different workers, the ingress order of events
2092bfe3f2eSlogwangmight have changed on the downstream atomic queue enqueue. On enqueue to the
2102bfe3f2eSlogwangatomic queue, the eventdev PMD driver reorders the event to the original
2112bfe3f2eSlogwangingress order(i.e producer ingress order).
2122bfe3f2eSlogwang
2132bfe3f2eSlogwangWhen the event is dequeued from the atomic queue by the worker, this test
2142bfe3f2eSlogwangverifies the expected sequence number of associated event per flow by comparing
2152bfe3f2eSlogwangthe free running expected sequence number per flow.
2162bfe3f2eSlogwang
2172bfe3f2eSlogwangApplication options
2182bfe3f2eSlogwang^^^^^^^^^^^^^^^^^^^
2192bfe3f2eSlogwang
2202bfe3f2eSlogwangSupported application command line options are following::
2212bfe3f2eSlogwang
2222bfe3f2eSlogwang   --verbose
2232bfe3f2eSlogwang   --dev
2242bfe3f2eSlogwang   --test
2252bfe3f2eSlogwang   --socket_id
2262bfe3f2eSlogwang   --pool_sz
2272bfe3f2eSlogwang   --plcores
2282bfe3f2eSlogwang   --wlcores
2292bfe3f2eSlogwang   --nb_flows
2302bfe3f2eSlogwang   --nb_pkts
2312bfe3f2eSlogwang   --worker_deq_depth
2324418919fSjohnjiang   --deq_tmo_nsec
2332bfe3f2eSlogwang
2342bfe3f2eSlogwangExample
2352bfe3f2eSlogwang^^^^^^^
2362bfe3f2eSlogwang
2372bfe3f2eSlogwangExample command to run order queue test:
2382bfe3f2eSlogwang
2392bfe3f2eSlogwang.. code-block:: console
2402bfe3f2eSlogwang
241*2d9fd380Sjfb8856606   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_sw0 -- \
2422bfe3f2eSlogwang                --test=order_queue --plcores 1 --wlcores 2,3
2432bfe3f2eSlogwang
2442bfe3f2eSlogwang
2452bfe3f2eSlogwangORDER_ATQ Test
2462bfe3f2eSlogwang~~~~~~~~~~~~~~
2472bfe3f2eSlogwang
2482bfe3f2eSlogwangThis test verifies the same aspects of ``order_queue`` test, the difference is
2492bfe3f2eSlogwangthe number of queues used, this test operates on a single ``all types queue(atq)``
2502bfe3f2eSlogwanginstead of two different queues for ordered and atomic.
2512bfe3f2eSlogwang
2522bfe3f2eSlogwang.. _table_eventdev_order_atq_test:
2532bfe3f2eSlogwang
2542bfe3f2eSlogwang.. table:: Order all types queue test eventdev configuration.
2552bfe3f2eSlogwang
2562bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
2572bfe3f2eSlogwang   | # | Items        | Value          | Comments               |
2582bfe3f2eSlogwang   |   |              |                |                        |
2592bfe3f2eSlogwang   +===+==============+================+========================+
2602bfe3f2eSlogwang   | 1 | nb_queues    | 1              | q0(all types queue)    |
2612bfe3f2eSlogwang   |   |              |                |                        |
2622bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
2632bfe3f2eSlogwang   | 2 | nb_producers | 1              |                        |
2642bfe3f2eSlogwang   |   |              |                |                        |
2652bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
2662bfe3f2eSlogwang   | 3 | nb_workers   | >= 1           |                        |
2672bfe3f2eSlogwang   |   |              |                |                        |
2682bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
2692bfe3f2eSlogwang   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to  |
2702bfe3f2eSlogwang   |   |              | 1              | port n-1.Producer uses |
2712bfe3f2eSlogwang   |   |              |                | port n.                |
2722bfe3f2eSlogwang   +---+--------------+----------------+------------------------+
2732bfe3f2eSlogwang
2742bfe3f2eSlogwang.. _figure_eventdev_order_atq_test:
2752bfe3f2eSlogwang
2762bfe3f2eSlogwang.. figure:: img/eventdev_order_atq_test.*
2772bfe3f2eSlogwang
2782bfe3f2eSlogwang   order all types queue test operation.
2792bfe3f2eSlogwang
2802bfe3f2eSlogwangApplication options
2812bfe3f2eSlogwang^^^^^^^^^^^^^^^^^^^
2822bfe3f2eSlogwang
2832bfe3f2eSlogwangSupported application command line options are following::
2842bfe3f2eSlogwang
2852bfe3f2eSlogwang   --verbose
2862bfe3f2eSlogwang   --dev
2872bfe3f2eSlogwang   --test
2882bfe3f2eSlogwang   --socket_id
2892bfe3f2eSlogwang   --pool_sz
2902bfe3f2eSlogwang   --plcores
2912bfe3f2eSlogwang   --wlcores
2922bfe3f2eSlogwang   --nb_flows
2932bfe3f2eSlogwang   --nb_pkts
2942bfe3f2eSlogwang   --worker_deq_depth
2954418919fSjohnjiang   --deq_tmo_nsec
2962bfe3f2eSlogwang
2972bfe3f2eSlogwangExample
2982bfe3f2eSlogwang^^^^^^^
2992bfe3f2eSlogwang
3002bfe3f2eSlogwangExample command to run order ``all types queue`` test:
3012bfe3f2eSlogwang
3022bfe3f2eSlogwang.. code-block:: console
3032bfe3f2eSlogwang
304*2d9fd380Sjfb8856606   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_octeontx -- \
3052bfe3f2eSlogwang                        --test=order_atq --plcores 1 --wlcores 2,3
3062bfe3f2eSlogwang
3072bfe3f2eSlogwang
3082bfe3f2eSlogwangPERF_QUEUE Test
3092bfe3f2eSlogwang~~~~~~~~~~~~~~~
3102bfe3f2eSlogwang
3112bfe3f2eSlogwangThis is a performance test case that aims at testing the following:
3122bfe3f2eSlogwang
3132bfe3f2eSlogwang#. Measure the number of events can be processed in a second.
3142bfe3f2eSlogwang#. Measure the latency to forward an event.
3152bfe3f2eSlogwang
3162bfe3f2eSlogwang.. _table_eventdev_perf_queue_test:
3172bfe3f2eSlogwang
3182bfe3f2eSlogwang.. table:: Perf queue test eventdev configuration.
3192bfe3f2eSlogwang
3202bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
3212bfe3f2eSlogwang   | # | Items        | Value          | Comments                                |
3222bfe3f2eSlogwang   |   |              |                |                                         |
3232bfe3f2eSlogwang   +===+==============+================+=========================================+
3242bfe3f2eSlogwang   | 1 | nb_queues    | nb_producers * | Queues will be configured based on the  |
3252bfe3f2eSlogwang   |   |              | nb_stages      | user requested sched type list(--stlist)|
3262bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
3272bfe3f2eSlogwang   | 2 | nb_producers | >= 1           | Selected through --plcores command line |
3282bfe3f2eSlogwang   |   |              |                | argument.                               |
3292bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
3302bfe3f2eSlogwang   | 3 | nb_workers   | >= 1           | Selected through --wlcores command line |
3312bfe3f2eSlogwang   |   |              |                | argument                                |
3322bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
3332bfe3f2eSlogwang   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n-1.         |
3342bfe3f2eSlogwang   |   |              | nb_producers   | Producers use port n to port p          |
3352bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
3362bfe3f2eSlogwang
3372bfe3f2eSlogwang.. _figure_eventdev_perf_queue_test:
3382bfe3f2eSlogwang
3392bfe3f2eSlogwang.. figure:: img/eventdev_perf_queue_test.*
3402bfe3f2eSlogwang
3412bfe3f2eSlogwang   perf queue test operation.
3422bfe3f2eSlogwang
3432bfe3f2eSlogwangThe perf queue test configures the eventdev with Q queues and P ports, where
3442bfe3f2eSlogwangQ and P is a function of the number of workers, the number of producers and
3452bfe3f2eSlogwangnumber of stages as mentioned in :numref:`table_eventdev_perf_queue_test`.
3462bfe3f2eSlogwang
3472bfe3f2eSlogwangThe user can choose the number of workers, the number of producers and number of
3482bfe3f2eSlogwangstages through the ``--wlcores``, ``--plcores`` and the ``--stlist`` application
3492bfe3f2eSlogwangcommand line arguments respectively.
3502bfe3f2eSlogwang
3512bfe3f2eSlogwangThe producer(s) injects the events to eventdev based the first stage sched type
3522bfe3f2eSlogwanglist requested by the user through ``--stlist`` the command line argument.
3532bfe3f2eSlogwang
3542bfe3f2eSlogwangBased on the number of stages to process(selected through ``--stlist``),
3552bfe3f2eSlogwangThe application forwards the event to next upstream queue and terminates when it
3562bfe3f2eSlogwangreaches the last stage in the pipeline. On event termination, application
3572bfe3f2eSlogwangincrements the number events processed and print periodically in one second
3582bfe3f2eSlogwangto get the number of events processed in one second.
3592bfe3f2eSlogwang
3602bfe3f2eSlogwangWhen ``--fwd_latency`` command line option selected, the application inserts
3612bfe3f2eSlogwangthe timestamp in the event on the first stage and then on termination, it
3622bfe3f2eSlogwangupdates the number of cycles to forward a packet. The application uses this
3632bfe3f2eSlogwangvalue to compute the average latency to a forward packet.
3642bfe3f2eSlogwang
365d30ea906Sjfb8856606When ``--prod_type_ethdev`` command line option is selected, the application
366d30ea906Sjfb8856606uses the probed ethernet devices as producers by configuring them as Rx
367d30ea906Sjfb8856606adapters instead of using synthetic producers.
368d30ea906Sjfb8856606
3692bfe3f2eSlogwangApplication options
3702bfe3f2eSlogwang^^^^^^^^^^^^^^^^^^^
3712bfe3f2eSlogwang
3722bfe3f2eSlogwangSupported application command line options are following::
3732bfe3f2eSlogwang
3742bfe3f2eSlogwang        --verbose
3752bfe3f2eSlogwang        --dev
3762bfe3f2eSlogwang        --test
3772bfe3f2eSlogwang        --socket_id
3782bfe3f2eSlogwang        --pool_sz
3792bfe3f2eSlogwang        --plcores
3802bfe3f2eSlogwang        --wlcores
3812bfe3f2eSlogwang        --stlist
3822bfe3f2eSlogwang        --nb_flows
3832bfe3f2eSlogwang        --nb_pkts
3842bfe3f2eSlogwang        --worker_deq_depth
3852bfe3f2eSlogwang        --fwd_latency
3862bfe3f2eSlogwang        --queue_priority
387d30ea906Sjfb8856606        --prod_type_ethdev
388d30ea906Sjfb8856606        --prod_type_timerdev_burst
389d30ea906Sjfb8856606        --prod_type_timerdev
390d30ea906Sjfb8856606        --timer_tick_nsec
391d30ea906Sjfb8856606        --max_tmo_nsec
392d30ea906Sjfb8856606        --expiry_nsec
393d30ea906Sjfb8856606        --nb_timers
394d30ea906Sjfb8856606        --nb_timer_adptrs
3954418919fSjohnjiang        --deq_tmo_nsec
3962bfe3f2eSlogwang
3972bfe3f2eSlogwangExample
3982bfe3f2eSlogwang^^^^^^^
3992bfe3f2eSlogwang
4002bfe3f2eSlogwangExample command to run perf queue test:
4012bfe3f2eSlogwang
4022bfe3f2eSlogwang.. code-block:: console
4032bfe3f2eSlogwang
404*2d9fd380Sjfb8856606   sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x1 --vdev=event_sw0 -- \
4052bfe3f2eSlogwang        --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0
4062bfe3f2eSlogwang
407d30ea906Sjfb8856606Example command to run perf queue test with ethernet ports:
408d30ea906Sjfb8856606
409d30ea906Sjfb8856606.. code-block:: console
410d30ea906Sjfb8856606
411d30ea906Sjfb8856606   sudo build/app/dpdk-test-eventdev --vdev=event_sw0 -- \
412d30ea906Sjfb8856606        --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --prod_type_ethdev
413d30ea906Sjfb8856606
414d30ea906Sjfb8856606Example command to run perf queue test with event timer adapter:
415d30ea906Sjfb8856606
416d30ea906Sjfb8856606.. code-block:: console
417d30ea906Sjfb8856606
418*2d9fd380Sjfb8856606   sudo  <build_dir>/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
419d30ea906Sjfb8856606                --wlcores 4 --plcores 12 --test perf_queue --stlist=a \
420d30ea906Sjfb8856606                --prod_type_timerdev --fwd_latency
4212bfe3f2eSlogwang
4222bfe3f2eSlogwangPERF_ATQ Test
4232bfe3f2eSlogwang~~~~~~~~~~~~~~~
4242bfe3f2eSlogwang
4252bfe3f2eSlogwangThis is a performance test case that aims at testing the following with
4262bfe3f2eSlogwang``all types queue`` eventdev scheme.
4272bfe3f2eSlogwang
4282bfe3f2eSlogwang#. Measure the number of events can be processed in a second.
4292bfe3f2eSlogwang#. Measure the latency to forward an event.
4302bfe3f2eSlogwang
4312bfe3f2eSlogwang.. _table_eventdev_perf_atq_test:
4322bfe3f2eSlogwang
4332bfe3f2eSlogwang.. table:: Perf all types queue test eventdev configuration.
4342bfe3f2eSlogwang
4352bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
4362bfe3f2eSlogwang   | # | Items        | Value          | Comments                                |
4372bfe3f2eSlogwang   |   |              |                |                                         |
4382bfe3f2eSlogwang   +===+==============+================+=========================================+
4392bfe3f2eSlogwang   | 1 | nb_queues    | nb_producers   | Queues will be configured based on the  |
4402bfe3f2eSlogwang   |   |              |                | user requested sched type list(--stlist)|
4412bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
4422bfe3f2eSlogwang   | 2 | nb_producers | >= 1           | Selected through --plcores command line |
4432bfe3f2eSlogwang   |   |              |                | argument.                               |
4442bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
4452bfe3f2eSlogwang   | 3 | nb_workers   | >= 1           | Selected through --wlcores command line |
4462bfe3f2eSlogwang   |   |              |                | argument                                |
4472bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
4482bfe3f2eSlogwang   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n-1.         |
4492bfe3f2eSlogwang   |   |              | nb_producers   | Producers use port n to port p          |
4502bfe3f2eSlogwang   +---+--------------+----------------+-----------------------------------------+
4512bfe3f2eSlogwang
4522bfe3f2eSlogwang.. _figure_eventdev_perf_atq_test:
4532bfe3f2eSlogwang
4542bfe3f2eSlogwang.. figure:: img/eventdev_perf_atq_test.*
4552bfe3f2eSlogwang
4562bfe3f2eSlogwang   perf all types queue test operation.
4572bfe3f2eSlogwang
4582bfe3f2eSlogwang
4592bfe3f2eSlogwangThe ``all types queues(atq)`` perf test configures the eventdev with Q queues
4602bfe3f2eSlogwangand P ports, where Q and P is a function of the number of workers and number of
4612bfe3f2eSlogwangproducers as mentioned in :numref:`table_eventdev_perf_atq_test`.
4622bfe3f2eSlogwang
4632bfe3f2eSlogwang
4642bfe3f2eSlogwangThe atq queue test functions as same as ``perf_queue`` test. The difference
4652bfe3f2eSlogwangis, It uses, ``all type queue scheme`` instead of separate queues for each
4662bfe3f2eSlogwangstage and thus reduces the number of queues required to realize the use case
4672bfe3f2eSlogwangand enables flow pinning as the event does not move to the next queue.
4682bfe3f2eSlogwang
4692bfe3f2eSlogwang
4702bfe3f2eSlogwangApplication options
4712bfe3f2eSlogwang^^^^^^^^^^^^^^^^^^^
4722bfe3f2eSlogwang
4732bfe3f2eSlogwangSupported application command line options are following::
4742bfe3f2eSlogwang
4752bfe3f2eSlogwang        --verbose
4762bfe3f2eSlogwang        --dev
4772bfe3f2eSlogwang        --test
4782bfe3f2eSlogwang        --socket_id
4792bfe3f2eSlogwang        --pool_sz
4802bfe3f2eSlogwang        --plcores
4812bfe3f2eSlogwang        --wlcores
4822bfe3f2eSlogwang        --stlist
4832bfe3f2eSlogwang        --nb_flows
4842bfe3f2eSlogwang        --nb_pkts
4852bfe3f2eSlogwang        --worker_deq_depth
4862bfe3f2eSlogwang        --fwd_latency
487d30ea906Sjfb8856606        --prod_type_ethdev
488d30ea906Sjfb8856606        --prod_type_timerdev_burst
489d30ea906Sjfb8856606        --prod_type_timerdev
490d30ea906Sjfb8856606        --timer_tick_nsec
491d30ea906Sjfb8856606        --max_tmo_nsec
492d30ea906Sjfb8856606        --expiry_nsec
493d30ea906Sjfb8856606        --nb_timers
494d30ea906Sjfb8856606        --nb_timer_adptrs
4954418919fSjohnjiang        --deq_tmo_nsec
4962bfe3f2eSlogwang
4972bfe3f2eSlogwangExample
4982bfe3f2eSlogwang^^^^^^^
4992bfe3f2eSlogwang
5002bfe3f2eSlogwangExample command to run perf ``all types queue`` test:
5012bfe3f2eSlogwang
5022bfe3f2eSlogwang.. code-block:: console
5032bfe3f2eSlogwang
504*2d9fd380Sjfb8856606   sudo <build_dir>/app/dpdk-test-eventdev --vdev=event_octeontx -- \
5052bfe3f2eSlogwang                --test=perf_atq --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0
506d30ea906Sjfb8856606
507d30ea906Sjfb8856606Example command to run perf ``all types queue`` test with event timer adapter:
508d30ea906Sjfb8856606
509d30ea906Sjfb8856606.. code-block:: console
510d30ea906Sjfb8856606
511*2d9fd380Sjfb8856606   sudo  <build_dir>/app/dpdk-test-eventdev --vdev="event_octeontx" -- \
512d30ea906Sjfb8856606                --wlcores 4 --plcores 12 --test perf_atq --verbose 20 \
513d30ea906Sjfb8856606                --stlist=a --prod_type_timerdev --fwd_latency
514d30ea906Sjfb8856606
515d30ea906Sjfb8856606
516d30ea906Sjfb8856606PIPELINE_QUEUE Test
517d30ea906Sjfb8856606~~~~~~~~~~~~~~~~~~~
518d30ea906Sjfb8856606
519d30ea906Sjfb8856606This is a pipeline test case that aims at testing the following:
520d30ea906Sjfb8856606
521d30ea906Sjfb8856606#. Measure the end-to-end performance of an event dev with a ethernet dev.
522d30ea906Sjfb8856606#. Maintain packet ordering from Rx to Tx.
523d30ea906Sjfb8856606
524d30ea906Sjfb8856606.. _table_eventdev_pipeline_queue_test:
525d30ea906Sjfb8856606
526d30ea906Sjfb8856606.. table:: Pipeline queue test eventdev configuration.
527d30ea906Sjfb8856606
528d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
529d30ea906Sjfb8856606   | # | Items        | Value          | Comments                                |
530d30ea906Sjfb8856606   |   |              |                |                                         |
531d30ea906Sjfb8856606   +===+==============+================+=========================================+
532d30ea906Sjfb8856606   | 1 | nb_queues    | (nb_producers  | Queues will be configured based on the  |
533d30ea906Sjfb8856606   |   |              | * nb_stages) + | user requested sched type list(--stlist)|
534d30ea906Sjfb8856606   |   |              | nb_producers   | At the last stage of the schedule list  |
535d30ea906Sjfb8856606   |   |              |                | the event is enqueued onto per port     |
536d30ea906Sjfb8856606   |   |              |                | unique queue which is then Transmitted. |
537d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
538d30ea906Sjfb8856606   | 2 | nb_producers | >= 1           | Producers will be configured based on   |
539d30ea906Sjfb8856606   |   |              |                | the number of detected ethernet devices.|
540d30ea906Sjfb8856606   |   |              |                | Each ethdev will be configured as an Rx |
541d30ea906Sjfb8856606   |   |              |                | adapter.                                |
542d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
543d30ea906Sjfb8856606   | 3 | nb_workers   | >= 1           | Selected through --wlcores command line |
544d30ea906Sjfb8856606   |   |              |                | argument                                |
545d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
546d30ea906Sjfb8856606   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n.           |
547d30ea906Sjfb8856606   |   |              | (nb_produces * | Producers use port n+1 to port n+m,     |
548d30ea906Sjfb8856606   |   |              | 2)             | depending on the Rx adapter capability. |
549d30ea906Sjfb8856606   |   |              |                | Consumers use port n+m+1 to port n+o    |
550d30ea906Sjfb8856606   |   |              |                | depending on the Tx adapter capability. |
551d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
552d30ea906Sjfb8856606
553d30ea906Sjfb8856606.. _figure_eventdev_pipeline_queue_test_generic:
554d30ea906Sjfb8856606
555d30ea906Sjfb8856606.. figure:: img/eventdev_pipeline_queue_test_generic.*
556d30ea906Sjfb8856606
557d30ea906Sjfb8856606.. _figure_eventdev_pipeline_queue_test_internal_port:
558d30ea906Sjfb8856606
559d30ea906Sjfb8856606.. figure:: img/eventdev_pipeline_queue_test_internal_port.*
560d30ea906Sjfb8856606
561d30ea906Sjfb8856606   pipeline queue test operation.
562d30ea906Sjfb8856606
563d30ea906Sjfb8856606The pipeline queue test configures the eventdev with Q queues and P ports,
564d30ea906Sjfb8856606where Q and P is a function of the number of workers, the number of producers
565d30ea906Sjfb8856606and number of stages as mentioned in :numref:`table_eventdev_pipeline_queue_test`.
566d30ea906Sjfb8856606
567d30ea906Sjfb8856606The user can choose the number of workers and number of stages through the
568d30ea906Sjfb8856606``--wlcores`` and the ``--stlist`` application command line arguments
569d30ea906Sjfb8856606respectively.
570d30ea906Sjfb8856606
571d30ea906Sjfb8856606The number of producers depends on the number of ethernet devices detected and
572d30ea906Sjfb8856606each ethernet device is configured as a event_eth_rx_adapter that acts as a
573d30ea906Sjfb8856606producer.
574d30ea906Sjfb8856606
575d30ea906Sjfb8856606The producer(s) injects the events to eventdev based the first stage sched type
576d30ea906Sjfb8856606list requested by the user through ``--stlist`` the command line argument.
577d30ea906Sjfb8856606
578d30ea906Sjfb8856606Based on the number of stages to process(selected through ``--stlist``),
579d30ea906Sjfb8856606The application forwards the event to next upstream queue and when it reaches
580d30ea906Sjfb8856606the last stage in the pipeline if the event type is ``atomic`` it is enqueued
581d30ea906Sjfb8856606onto ethdev Tx queue else to maintain ordering the event type is set to
582d30ea906Sjfb8856606``atomic`` and enqueued onto the last stage queue.
583d30ea906Sjfb8856606
584d30ea906Sjfb8856606If the ethdev and eventdev pair have ``RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT``
585d30ea906Sjfb8856606capability then the worker cores enqueue the packets to the eventdev directly
586d30ea906Sjfb8856606using ``rte_event_eth_tx_adapter_enqueue`` else the worker cores enqueue the
587d30ea906Sjfb8856606packet onto the ``SINGLE_LINK_QUEUE`` that is managed by the Tx adapter.
588d30ea906Sjfb8856606The Tx adapter dequeues the packet and transmits it.
589d30ea906Sjfb8856606
590d30ea906Sjfb8856606On packet Tx, application increments the number events processed and print
591d30ea906Sjfb8856606periodically in one second to get the number of events processed in one
592d30ea906Sjfb8856606second.
593d30ea906Sjfb8856606
594d30ea906Sjfb8856606
595d30ea906Sjfb8856606Application options
596d30ea906Sjfb8856606^^^^^^^^^^^^^^^^^^^
597d30ea906Sjfb8856606
598d30ea906Sjfb8856606Supported application command line options are following::
599d30ea906Sjfb8856606
600d30ea906Sjfb8856606        --verbose
601d30ea906Sjfb8856606        --dev
602d30ea906Sjfb8856606        --test
603d30ea906Sjfb8856606        --socket_id
604d30ea906Sjfb8856606        --pool_sz
605d30ea906Sjfb8856606        --wlcores
606d30ea906Sjfb8856606        --stlist
607d30ea906Sjfb8856606        --worker_deq_depth
608d30ea906Sjfb8856606        --prod_type_ethdev
6094418919fSjohnjiang        --deq_tmo_nsec
610d30ea906Sjfb8856606
611d30ea906Sjfb8856606
612d30ea906Sjfb8856606.. Note::
613d30ea906Sjfb8856606
614d30ea906Sjfb8856606    * The ``--prod_type_ethdev`` is mandatory for running this test.
615d30ea906Sjfb8856606
616d30ea906Sjfb8856606Example
617d30ea906Sjfb8856606^^^^^^^
618d30ea906Sjfb8856606
619d30ea906Sjfb8856606Example command to run pipeline queue test:
620d30ea906Sjfb8856606
621d30ea906Sjfb8856606.. code-block:: console
622d30ea906Sjfb8856606
623*2d9fd380Sjfb8856606    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
624d30ea906Sjfb8856606        --test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=a
625d30ea906Sjfb8856606
626d30ea906Sjfb8856606
627d30ea906Sjfb8856606PIPELINE_ATQ Test
628d30ea906Sjfb8856606~~~~~~~~~~~~~~~~~~~
629d30ea906Sjfb8856606
630d30ea906Sjfb8856606This is a pipeline test case that aims at testing the following with
631d30ea906Sjfb8856606``all types queue`` eventdev scheme.
632d30ea906Sjfb8856606
633d30ea906Sjfb8856606#. Measure the end-to-end performance of an event dev with a ethernet dev.
634d30ea906Sjfb8856606#. Maintain packet ordering from Rx to Tx.
635d30ea906Sjfb8856606
636d30ea906Sjfb8856606.. _table_eventdev_pipeline_atq_test:
637d30ea906Sjfb8856606
638d30ea906Sjfb8856606.. table:: Pipeline atq test eventdev configuration.
639d30ea906Sjfb8856606
640d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
641d30ea906Sjfb8856606   | # | Items        | Value          | Comments                                |
642d30ea906Sjfb8856606   |   |              |                |                                         |
643d30ea906Sjfb8856606   +===+==============+================+=========================================+
644d30ea906Sjfb8856606   | 1 | nb_queues    | nb_producers + | Queues will be configured based on the  |
645d30ea906Sjfb8856606   |   |              | x              | user requested sched type list(--stlist)|
646d30ea906Sjfb8856606   |   |              |                | where x = nb_producers in generic       |
647d30ea906Sjfb8856606   |   |              |                | pipeline and 0 if all the ethdev        |
648d30ea906Sjfb8856606   |   |              |                | being used have Internal port capability|
649d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
650d30ea906Sjfb8856606   | 2 | nb_producers | >= 1           | Producers will be configured based on   |
651d30ea906Sjfb8856606   |   |              |                | the number of detected ethernet devices.|
652d30ea906Sjfb8856606   |   |              |                | Each ethdev will be configured as an Rx |
653d30ea906Sjfb8856606   |   |              |                | adapter.                                |
654d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
655d30ea906Sjfb8856606   | 3 | nb_workers   | >= 1           | Selected through --wlcores command line |
656d30ea906Sjfb8856606   |   |              |                | argument                                |
657d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
658d30ea906Sjfb8856606   | 4 | nb_ports     | nb_workers +   | Workers use port 0 to port n.           |
659d30ea906Sjfb8856606   |   |              | nb_producers + | Producers use port n+1 to port n+m,     |
660d30ea906Sjfb8856606   |   |              | x              | depending on the Rx adapter capability. |
661d30ea906Sjfb8856606   |   |              |                | x = nb_producers in generic pipeline and|
662d30ea906Sjfb8856606   |   |              |                | 0 if all the ethdev being used have     |
663d30ea906Sjfb8856606   |   |              |                | Internal port capability.               |
664d30ea906Sjfb8856606   |   |              |                | Consumers may use port n+m+1 to port n+o|
665d30ea906Sjfb8856606   |   |              |                | depending on the Tx adapter capability. |
666d30ea906Sjfb8856606   +---+--------------+----------------+-----------------------------------------+
667d30ea906Sjfb8856606
668d30ea906Sjfb8856606.. _figure_eventdev_pipeline_atq_test_generic:
669d30ea906Sjfb8856606
670d30ea906Sjfb8856606.. figure:: img/eventdev_pipeline_atq_test_generic.*
671d30ea906Sjfb8856606
672d30ea906Sjfb8856606.. _figure_eventdev_pipeline_atq_test_internal_port:
673d30ea906Sjfb8856606
674d30ea906Sjfb8856606.. figure:: img/eventdev_pipeline_atq_test_internal_port.*
675d30ea906Sjfb8856606
676d30ea906Sjfb8856606   pipeline atq test operation.
677d30ea906Sjfb8856606
678d30ea906Sjfb8856606The pipeline atq test configures the eventdev with Q queues and P ports,
679d30ea906Sjfb8856606where Q and P is a function of the number of workers, the number of producers
680d30ea906Sjfb8856606and number of stages as mentioned in :numref:`table_eventdev_pipeline_atq_test`.
681d30ea906Sjfb8856606
682d30ea906Sjfb8856606The atq queue test functions as same as ``pipeline_queue`` test. The difference
683d30ea906Sjfb8856606is, It uses, ``all type queue scheme`` instead of separate queues for each
684d30ea906Sjfb8856606stage and thus reduces the number of queues required to realize the use case.
685d30ea906Sjfb8856606
686d30ea906Sjfb8856606
687d30ea906Sjfb8856606Application options
688d30ea906Sjfb8856606^^^^^^^^^^^^^^^^^^^
689d30ea906Sjfb8856606
690d30ea906Sjfb8856606Supported application command line options are following::
691d30ea906Sjfb8856606
692d30ea906Sjfb8856606        --verbose
693d30ea906Sjfb8856606        --dev
694d30ea906Sjfb8856606        --test
695d30ea906Sjfb8856606        --socket_id
696d30ea906Sjfb8856606        --pool_sz
697d30ea906Sjfb8856606        --wlcores
698d30ea906Sjfb8856606        --stlist
699d30ea906Sjfb8856606        --worker_deq_depth
700d30ea906Sjfb8856606        --prod_type_ethdev
7014418919fSjohnjiang        --deq_tmo_nsec
702d30ea906Sjfb8856606
703d30ea906Sjfb8856606
704d30ea906Sjfb8856606.. Note::
705d30ea906Sjfb8856606
706d30ea906Sjfb8856606    * The ``--prod_type_ethdev`` is mandatory for running this test.
707d30ea906Sjfb8856606
708d30ea906Sjfb8856606Example
709d30ea906Sjfb8856606^^^^^^^
710d30ea906Sjfb8856606
711d30ea906Sjfb8856606Example command to run pipeline queue test:
712d30ea906Sjfb8856606
713d30ea906Sjfb8856606.. code-block:: console
714d30ea906Sjfb8856606
715*2d9fd380Sjfb8856606    sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \
716d30ea906Sjfb8856606        --test=pipeline_atq --wlcore=1 --prod_type_ethdev --stlist=a
717