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