1.. SPDX-License-Identifier: BSD-3-Clause 2 Copyright(c) 2017 Cavium, Inc 3 4dpdk-test-eventdev Application 5============================== 6 7The ``dpdk-test-eventdev`` tool is a Data Plane Development Kit (DPDK) 8application that allows exercising various eventdev use cases. 9This application has a generic framework to add new eventdev based test cases to 10verify functionality and measure the performance parameters of DPDK eventdev 11devices. 12 13 14Running the Application 15----------------------- 16 17The application has a number of command line options: 18 19.. code-block:: console 20 21 dpdk-test-eventdev [EAL Options] -- [application options] 22 23EAL Options 24~~~~~~~~~~~ 25 26The following are the EAL command-line options that can be used in conjunction 27with the ``dpdk-test-eventdev`` application. 28See the DPDK Getting Started Guides for more information on these options. 29 30* ``-c <COREMASK>`` or ``-l <CORELIST>`` 31 32 Set the hexadecimal bitmask of the cores to run on. The corelist is a 33 list of cores to use. 34 35* ``--vdev <driver><id>`` 36 37 Add a virtual eventdev device. 38 39Application Options 40~~~~~~~~~~~~~~~~~~~ 41 42The following are the application command-line options: 43 44* ``--verbose`` 45 46 Set verbose level. Default is 1. Value > 1 displays more details. 47 48* ``--dev <n>`` 49 50 Set the device id of the event device. 51 52* ``--test <name>`` 53 54 Set test name, where ``name`` is one of the following:: 55 56 order_queue 57 order_atq 58 perf_queue 59 perf_atq 60 pipeline_atq 61 pipeline_queue 62 63* ``--socket_id <n>`` 64 65 Set the socket id of the application resources. 66 67* ``--pool-sz <n>`` 68 69 Set the number of mbufs to be allocated from the mempool. 70 71* ``--plcores <CORELIST>`` 72 73 Set the list of cores to be used as producers. 74 75* ``--wlcores <CORELIST>`` 76 77 Set the list of cores to be used as workers. 78 79* ``--stlist <type_list>`` 80 81 Set the scheduled type of each stage where ``type_list`` size 82 determines the number of stages used in the test application. 83 Each type_list member can be one of the following:: 84 85 P or p : Parallel schedule type 86 O or o : Ordered schedule type 87 A or a : Atomic schedule type 88 89 Application expects the ``type_list`` in comma separated form (i.e. ``--stlist o,a,a,a``) 90 91* ``--nb_flows <n>`` 92 93 Set the number of flows to produce. 94 95* ``--nb_pkts <n>`` 96 97 Set the number of packets to produce. 0 implies no limit. 98 99* ``--worker_deq_depth <n>`` 100 101 Set the dequeue depth of the worker. 102 103* ``--fwd_latency`` 104 105 Perform forward latency measurement. 106 107* ``--queue_priority`` 108 109 Enable queue priority. 110 111* ``--prod_type_ethdev`` 112 113 Use ethernet device as producer. 114 115* ``--prod_type_timerdev`` 116 117 Use event timer adapter as producer. 118 119* ``--prod_type_timerdev_burst`` 120 121 Use burst mode event timer adapter as producer. 122 123* ``--prod_type_cryptodev`` 124 125 Use crypto device as producer. 126 127* ``--prod_type_dmadev`` 128 129 Use DMA device as producer. 130 131* ``--timer_tick_nsec`` 132 133 Used to dictate number of nano seconds between bucket traversal of the 134 event timer adapter. Refer `rte_event_timer_adapter_conf`. 135 136* ``--max_tmo_nsec`` 137 138 Used to configure event timer adapter max arm timeout in nano seconds. 139 140* ``--expiry_nsec`` 141 142 Dictate the number of nano seconds after which the event timer expires. 143 144* ``--nb_timers`` 145 146 Number of event timers each producer core will generate. 147 148* ``--nb_timer_adptrs`` 149 150 Number of event timer adapters to be used. Each adapter is used in 151 round robin manner by the producer cores. 152 153* ``--deq_tmo_nsec`` 154 155 Global dequeue timeout for all the event ports if the provided dequeue 156 timeout is out of the supported range of event device it will be 157 adjusted to the highest/lowest supported dequeue timeout supported. 158 159* ``--crypto_adptr_mode`` 160 161 Set crypto adapter mode. Use 0 for OP_NEW (default) and 1 for 162 OP_FORWARD mode. 163 164* ``--dma_adptr_mode`` 165 166 Set dma adapter mode. DMA adapter supports only OP_FORWARD mode. 167 168* ``--crypto_op_type`` 169 170 Set crypto operation type. Use 0 for symmetric crypto ops (default) 171 and 1 for asymmetric crypto ops. 172 173* ``--crypto_cipher_alg`` 174 175 Cipher algorithm to be used. Default algorithm is NULL. 176 177* ``--crypto_cipher_key`` 178 179 Key for the cipher algorithm selected. 180 181* ``--crypto_cipher_iv_sz`` 182 183 IV size for the cipher algorithm 184 185* ``--mbuf_sz`` 186 187 Set packet mbuf size. Can be used to configure Jumbo Frames. Only 188 applicable for `pipeline_atq` and `pipeline_queue` tests. 189 190* ``--max_pkt_sz`` 191 192 Set max packet mbuf size. Can be used to configure Rx/Tx scatter gather. 193 Only applicable for `pipeline_atq` and `pipeline_queue` tests. 194 195* ``--prod_enq_burst_sz`` 196 197 Set producer enqueue burst size. Can be used to configure the number of 198 events the producer(s) will enqueue as a burst to the event device. 199 Only applicable for `perf_queue` and `perf_atq` test in combination with 200 CPU (default) or crypto device (``--prod_type_cryptodev``) producers. 201 202* ``--nb_eth_queues`` 203 204 Configure multiple Rx queues per each ethernet port. 205 Only applicable for `pipeline_atq` and `pipeline_queue` tests. 206 207* ``--enable_vector`` 208 209 Enable event vector for Rx/Tx/crypto adapters. 210 Only applicable for `pipeline_*` and `perf_*` tests. 211 212* ``--vector_size`` 213 214 Vector size to configure for the Rx/crypto adapter. 215 Only applicable for `pipeline_*` and `perf_*` tests. 216 217* ``--vector_tmo_ns`` 218 219 Vector timeout nanoseconds to be configured for the Rx/crypto adapter. 220 Only applicable for `pipeline_*` and `perf_*` tests. 221 222* ``--per_port_pool`` 223 224 Configure unique mempool per ethernet device, the size of each pool 225 is equal to `pool_sz`. 226 Only applicable for `pipeline_atq` and `pipeline_queue` tests. 227 228* ``--tx_first`` 229 230 Transmit given number of packets across all the ethernet device that 231 are enabled in the test. 232 Only applicable for `pipeline_atq` and `pipeline_queue` tests. 233 234* ``--tx_pkt_sz`` 235 236 Packet size to use for `--tx_first`. 237 Only applicable for `pipeline_atq` and `pipeline_queue` tests. 238 239* ``--preschedule`` 240 241 Enable pre-scheduling of events. 242 0 - Disable pre-scheduling. 243 1 - Enable pre-scheduling. 244 2 - Enable pre-schedule with adaptive mode (Default). 245 246 247Eventdev Tests 248-------------- 249 250ORDER_QUEUE Test 251~~~~~~~~~~~~~~~~ 252 253This is a functional test case that aims at testing the following: 254 255#. Verify the ingress order maintenance. 256#. Verify the exclusive(atomic) access to given atomic flow per eventdev port. 257 258.. _table_eventdev_order_queue_test: 259 260.. table:: Order queue test eventdev configuration. 261 262 +---+--------------+----------------+------------------------+ 263 | # | Items | Value | Comments | 264 | | | | | 265 +===+==============+================+========================+ 266 | 1 | nb_queues | 2 | q0(ordered), q1(atomic)| 267 | | | | | 268 +---+--------------+----------------+------------------------+ 269 | 2 | nb_producers | 1 | | 270 | | | | | 271 +---+--------------+----------------+------------------------+ 272 | 3 | nb_workers | >= 1 | | 273 | | | | | 274 +---+--------------+----------------+------------------------+ 275 | 4 | nb_ports | nb_workers + | Workers use port 0 to | 276 | | | 1 | port n-1. Producer uses| 277 | | | | port n | 278 +---+--------------+----------------+------------------------+ 279 280.. _figure_eventdev_order_queue_test: 281 282.. figure:: img/eventdev_order_queue_test.* 283 284 order queue test operation. 285 286The order queue test configures the eventdev with two queues and an event 287producer to inject the events to q0(ordered) queue. Both q0(ordered) and 288q1(atomic) are linked to all the workers. 289 290The event producer maintains a sequence number per flow and injects the events 291to the ordered queue. The worker receives the events from ordered queue and 292forwards to atomic queue. Since the events from an ordered queue can be 293processed in parallel on the different workers, the ingress order of events 294might have changed on the downstream atomic queue enqueue. On enqueue to the 295atomic queue, the eventdev PMD reorders the event to the original 296ingress order(i.e producer ingress order). 297 298When the event is dequeued from the atomic queue by the worker, this test 299verifies the expected sequence number of associated event per flow by comparing 300the free running expected sequence number per flow. 301 302Application options 303^^^^^^^^^^^^^^^^^^^ 304 305Supported application command line options are following:: 306 307 --verbose 308 --dev 309 --test 310 --socket_id 311 --pool_sz 312 --plcores 313 --wlcores 314 --nb_flows 315 --nb_pkts 316 --worker_deq_depth 317 --deq_tmo_nsec 318 319Example 320^^^^^^^ 321 322Example command to run order queue test: 323 324.. code-block:: console 325 326 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -s 0x10 --vdev=event_sw0 -- \ 327 --test=order_queue --plcores 1 --wlcores 2,3 328 329 330ORDER_ATQ Test 331~~~~~~~~~~~~~~ 332 333This test verifies the same aspects of ``order_queue`` test, the difference is 334the number of queues used, this test operates on a single ``all types queue(atq)`` 335instead of two different queues for ordered and atomic. 336 337.. _table_eventdev_order_atq_test: 338 339.. table:: Order all types queue test eventdev configuration. 340 341 +---+--------------+----------------+------------------------+ 342 | # | Items | Value | Comments | 343 | | | | | 344 +===+==============+================+========================+ 345 | 1 | nb_queues | 1 | q0(all types queue) | 346 | | | | | 347 +---+--------------+----------------+------------------------+ 348 | 2 | nb_producers | 1 | | 349 | | | | | 350 +---+--------------+----------------+------------------------+ 351 | 3 | nb_workers | >= 1 | | 352 | | | | | 353 +---+--------------+----------------+------------------------+ 354 | 4 | nb_ports | nb_workers + | Workers use port 0 to | 355 | | | 1 | port n-1.Producer uses | 356 | | | | port n. | 357 +---+--------------+----------------+------------------------+ 358 359.. _figure_eventdev_order_atq_test: 360 361.. figure:: img/eventdev_order_atq_test.* 362 363 order all types queue test operation. 364 365Application options 366^^^^^^^^^^^^^^^^^^^ 367 368Supported application command line options are following:: 369 370 --verbose 371 --dev 372 --test 373 --socket_id 374 --pool_sz 375 --plcores 376 --wlcores 377 --nb_flows 378 --nb_pkts 379 --worker_deq_depth 380 --deq_tmo_nsec 381 382Example 383^^^^^^^ 384 385Example command to run order ``all types queue`` test: 386 387.. code-block:: console 388 389 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -- \ 390 --test=order_atq --plcores 1 --wlcores 2,3 391 392 393PERF_QUEUE Test 394~~~~~~~~~~~~~~~ 395 396This is a performance test case that aims at testing the following: 397 398#. Measure the number of events can be processed in a second. 399#. Measure the latency to forward an event. 400 401.. _table_eventdev_perf_queue_test: 402 403.. table:: Perf queue test eventdev configuration. 404 405 +---+--------------+----------------+-----------------------------------------+ 406 | # | Items | Value | Comments | 407 | | | | | 408 +===+==============+================+=========================================+ 409 | 1 | nb_queues | nb_producers * | Queues will be configured based on the | 410 | | | nb_stages | user requested sched type list(--stlist)| 411 +---+--------------+----------------+-----------------------------------------+ 412 | 2 | nb_producers | >= 1 | Selected through --plcores command line | 413 | | | | argument. | 414 +---+--------------+----------------+-----------------------------------------+ 415 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 416 | | | | argument | 417 +---+--------------+----------------+-----------------------------------------+ 418 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n-1. | 419 | | | nb_producers | Producers use port n to port p | 420 +---+--------------+----------------+-----------------------------------------+ 421 422.. _figure_eventdev_perf_queue_test: 423 424.. figure:: img/eventdev_perf_queue_test.* 425 426 perf queue test operation. 427 428The perf queue test configures the eventdev with Q queues and P ports, where 429Q and P is a function of the number of workers, the number of producers and 430number of stages as mentioned in :numref:`table_eventdev_perf_queue_test`. 431 432The user can choose the number of workers, the number of producers and number of 433stages through the ``--wlcores``, ``--plcores`` and the ``--stlist`` application 434command line arguments respectively. 435 436The producer(s) injects the events to eventdev based on the first stage sched type 437list requested by the user through ``--stlist`` command line argument. It can 438inject a burst of events using ``--prod_enq_burst_sz`` command line argument. 439 440Based on the number of stages to process(selected through ``--stlist``), 441The application forwards the event to next upstream queue and terminates when it 442reaches the last stage in the pipeline. On event termination, application 443increments the number events processed and print periodically in one second 444to get the number of events processed in one second. 445 446When ``--fwd_latency`` command line option selected, the application inserts 447the timestamp in the event on the first stage and then on termination, it 448updates the number of cycles to forward a packet. The application uses this 449value to compute the average latency to a forward packet. 450 451When ``--prod_type_ethdev`` command line option is selected, the application 452uses the probed ethernet devices as producers by configuring them as Rx 453adapters instead of using synthetic producers. 454 455Application options 456^^^^^^^^^^^^^^^^^^^ 457 458Supported application command line options are following:: 459 460 --verbose 461 --dev 462 --test 463 --socket_id 464 --pool_sz 465 --plcores 466 --wlcores 467 --stlist 468 --nb_flows 469 --nb_pkts 470 --worker_deq_depth 471 --fwd_latency 472 --queue_priority 473 --prod_type_ethdev 474 --prod_type_timerdev_burst 475 --prod_type_timerdev 476 --prod_type_cryptodev 477 --prod_type_dmadev 478 --prod_enq_burst_sz 479 --timer_tick_nsec 480 --max_tmo_nsec 481 --expiry_nsec 482 --nb_timers 483 --nb_timer_adptrs 484 --deq_tmo_nsec 485 --crypto_adptr_mode 486 --dma_adptr_mode 487 488Example 489^^^^^^^ 490 491Example command to run perf queue test: 492 493.. code-block:: console 494 495 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x2 --vdev=event_sw0 -- \ 496 --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0 497 498Example command to run perf queue test with producer enqueuing a burst of events: 499 500.. code-block:: console 501 502 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x2 --vdev=event_sw0 -- \ 503 --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0 \ 504 --prod_enq_burst_sz=32 505 506Example command to run perf queue test with ethernet ports: 507 508.. code-block:: console 509 510 sudo build/app/dpdk-test-eventdev -c 0xf -s 0x2 --vdev=event_sw0 -- \ 511 --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --prod_type_ethdev 512 513Example command to run perf queue test with event timer adapter: 514 515.. code-block:: console 516 517 sudo <build_dir>/app/dpdk-test-eventdev -c 0xfff1 \ 518 -- --wlcores 4 --plcores 12 --test perf_queue --stlist=a \ 519 --prod_type_timerdev --fwd_latency 520 521Example command to run perf queue test with event DMA adapter: 522 523.. code-block:: console 524 525 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -s 0x2 \ 526 -- --test=perf_queue --plcores= 2 --wlcore=3 --stlist=a \ 527 --prod_type_dmadev --dma_adptr_mode=1 528 529PERF_ATQ Test 530~~~~~~~~~~~~~~~ 531 532This is a performance test case that aims at testing the following with 533``all types queue`` eventdev scheme. 534 535#. Measure the number of events can be processed in a second. 536#. Measure the latency to forward an event. 537 538.. _table_eventdev_perf_atq_test: 539 540.. table:: Perf all types queue test eventdev configuration. 541 542 +---+--------------+----------------+-----------------------------------------+ 543 | # | Items | Value | Comments | 544 | | | | | 545 +===+==============+================+=========================================+ 546 | 1 | nb_queues | nb_producers | Queues will be configured based on the | 547 | | | | user requested sched type list(--stlist)| 548 +---+--------------+----------------+-----------------------------------------+ 549 | 2 | nb_producers | >= 1 | Selected through --plcores command line | 550 | | | | argument. | 551 +---+--------------+----------------+-----------------------------------------+ 552 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 553 | | | | argument | 554 +---+--------------+----------------+-----------------------------------------+ 555 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n-1. | 556 | | | nb_producers | Producers use port n to port p | 557 +---+--------------+----------------+-----------------------------------------+ 558 559.. _figure_eventdev_perf_atq_test: 560 561.. figure:: img/eventdev_perf_atq_test.* 562 563 perf all types queue test operation. 564 565 566The ``all types queues(atq)`` perf test configures the eventdev with Q queues 567and P ports, where Q and P is a function of the number of workers and number of 568producers as mentioned in :numref:`table_eventdev_perf_atq_test`. 569 570 571The atq queue test functions as same as ``perf_queue`` test. The difference 572is, It uses, ``all type queue scheme`` instead of separate queues for each 573stage and thus reduces the number of queues required to realize the use case 574and enables flow pinning as the event does not move to the next queue. 575 576 577Application options 578^^^^^^^^^^^^^^^^^^^ 579 580Supported application command line options are following:: 581 582 --verbose 583 --dev 584 --test 585 --socket_id 586 --pool_sz 587 --plcores 588 --wlcores 589 --stlist 590 --nb_flows 591 --nb_pkts 592 --worker_deq_depth 593 --fwd_latency 594 --prod_type_ethdev 595 --prod_type_timerdev_burst 596 --prod_type_timerdev 597 --prod_type_cryptodev 598 --prod_type_dmadev 599 --timer_tick_nsec 600 --max_tmo_nsec 601 --expiry_nsec 602 --nb_timers 603 --nb_timer_adptrs 604 --deq_tmo_nsec 605 --crypto_adptr_mode 606 --dma_adptr_mode 607 608Example 609^^^^^^^ 610 611Example command to run perf ``all types queue`` test: 612 613.. code-block:: console 614 615 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -- \ 616 --test=perf_atq --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0 617 618Example command to run perf ``all types queue`` test with event timer adapter: 619 620.. code-block:: console 621 622 sudo <build_dir>/app/dpdk-test-eventdev -c 0xfff1 \ 623 -- --wlcores 4 --plcores 12 --test perf_atq --verbose 20 \ 624 --stlist=a --prod_type_timerdev --fwd_latency 625 626Example command to run perf atq test with event DMA adapter: 627 628.. code-block:: console 629 630 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -s 0x2 \ 631 -- --test=perf_atq --plcores= 2 --wlcore=3 --stlist=a \ 632 --prod_type_dmadev --dma_adptr_mode=1 633 634PIPELINE_QUEUE Test 635~~~~~~~~~~~~~~~~~~~ 636 637This is a pipeline test case that aims at testing the following: 638 639#. Measure the end-to-end performance of an event dev with a ethernet dev. 640#. Maintain packet ordering from Rx to Tx. 641 642.. _table_eventdev_pipeline_queue_test: 643 644.. table:: Pipeline queue test eventdev configuration. 645 646 +---+--------------+----------------+-----------------------------------------+ 647 | # | Items | Value | Comments | 648 | | | | | 649 +===+==============+================+=========================================+ 650 | 1 | nb_queues | (nb_producers | Queues will be configured based on the | 651 | | | * nb_stages) + | user requested sched type list(--stlist)| 652 | | | nb_producers | At the last stage of the schedule list | 653 | | | | the event is enqueued onto per port | 654 | | | | unique queue which is then Transmitted. | 655 +---+--------------+----------------+-----------------------------------------+ 656 | 2 | nb_producers | >= 1 | Producers will be configured based on | 657 | | | | the number of detected ethernet devices.| 658 | | | | Each ethdev will be configured as an Rx | 659 | | | | adapter. | 660 +---+--------------+----------------+-----------------------------------------+ 661 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 662 | | | | argument | 663 +---+--------------+----------------+-----------------------------------------+ 664 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n. | 665 | | | (nb_produces * | Producers use port n+1 to port n+m, | 666 | | | 2) | depending on the Rx adapter capability. | 667 | | | | Consumers use port n+m+1 to port n+o | 668 | | | | depending on the Tx adapter capability. | 669 +---+--------------+----------------+-----------------------------------------+ 670 671.. _figure_eventdev_pipeline_queue_test_generic: 672 673.. figure:: img/eventdev_pipeline_queue_test_generic.* 674 675.. _figure_eventdev_pipeline_queue_test_internal_port: 676 677.. figure:: img/eventdev_pipeline_queue_test_internal_port.* 678 679 pipeline queue test operation. 680 681The pipeline queue test configures the eventdev with Q queues and P ports, 682where Q and P is a function of the number of workers, the number of producers 683and number of stages as mentioned in :numref:`table_eventdev_pipeline_queue_test`. 684 685The user can choose the number of workers and number of stages through the 686``--wlcores`` and the ``--stlist`` application command line arguments 687respectively. 688 689The number of producers depends on the number of ethernet devices detected and 690each ethernet device is configured as a event_eth_rx_adapter that acts as a 691producer. 692 693The producer(s) injects the events to eventdev based the first stage sched type 694list requested by the user through ``--stlist`` the command line argument. 695 696Based on the number of stages to process(selected through ``--stlist``), 697The application forwards the event to next upstream queue and when it reaches 698the last stage in the pipeline if the event type is ``atomic`` it is enqueued 699onto ethdev Tx queue else to maintain ordering the event type is set to 700``atomic`` and enqueued onto the last stage queue. 701 702If the ethdev and eventdev pair have ``RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT`` 703capability then the worker cores enqueue the packets to the eventdev directly 704using ``rte_event_eth_tx_adapter_enqueue`` else the worker cores enqueue the 705packet onto the ``SINGLE_LINK_QUEUE`` that is managed by the Tx adapter. 706The Tx adapter dequeues the packet and transmits it. 707 708On packet Tx, application increments the number events processed and print 709periodically in one second to get the number of events processed in one 710second. 711 712 713Application options 714^^^^^^^^^^^^^^^^^^^ 715 716Supported application command line options are following:: 717 718 --verbose 719 --dev 720 --test 721 --socket_id 722 --pool_sz 723 --wlcores 724 --stlist 725 --worker_deq_depth 726 --prod_type_ethdev 727 --deq_tmo_nsec 728 --nb_eth_queues 729 --enable_vector 730 --vector_size 731 --vector_tmo_ns 732 --per_port_pool 733 --tx_first 734 --tx_pkt_sz 735 736 737.. Note:: 738 739 * The ``--prod_type_ethdev`` is mandatory for running this test. 740 741Example 742^^^^^^^ 743 744Example command to run pipeline queue test: 745 746.. code-block:: console 747 748 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \ 749 --test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=a 750 751Example command to run pipeline atq test with vector events: 752 753.. code-block:: console 754 755 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \ 756 --test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=a \ 757 --enable_vector --vector_size 512 758 759PIPELINE_ATQ Test 760~~~~~~~~~~~~~~~~~~~ 761 762This is a pipeline test case that aims at testing the following with 763``all types queue`` eventdev scheme. 764 765#. Measure the end-to-end performance of an event dev with a ethernet dev. 766#. Maintain packet ordering from Rx to Tx. 767 768.. _table_eventdev_pipeline_atq_test: 769 770.. table:: Pipeline atq test eventdev configuration. 771 772 +---+--------------+----------------+-----------------------------------------+ 773 | # | Items | Value | Comments | 774 | | | | | 775 +===+==============+================+=========================================+ 776 | 1 | nb_queues | nb_producers + | Queues will be configured based on the | 777 | | | x | user requested sched type list(--stlist)| 778 | | | | where x = nb_producers in generic | 779 | | | | pipeline and 0 if all the ethdev | 780 | | | | being used have Internal port capability| 781 +---+--------------+----------------+-----------------------------------------+ 782 | 2 | nb_producers | >= 1 | Producers will be configured based on | 783 | | | | the number of detected ethernet devices.| 784 | | | | Each ethdev will be configured as an Rx | 785 | | | | adapter. | 786 +---+--------------+----------------+-----------------------------------------+ 787 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 788 | | | | argument | 789 +---+--------------+----------------+-----------------------------------------+ 790 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n. | 791 | | | nb_producers + | Producers use port n+1 to port n+m, | 792 | | | x | depending on the Rx adapter capability. | 793 | | | | x = nb_producers in generic pipeline and| 794 | | | | 0 if all the ethdev being used have | 795 | | | | Internal port capability. | 796 | | | | Consumers may use port n+m+1 to port n+o| 797 | | | | depending on the Tx adapter capability. | 798 +---+--------------+----------------+-----------------------------------------+ 799 800.. _figure_eventdev_pipeline_atq_test_generic: 801 802.. figure:: img/eventdev_pipeline_atq_test_generic.* 803 804.. _figure_eventdev_pipeline_atq_test_internal_port: 805 806.. figure:: img/eventdev_pipeline_atq_test_internal_port.* 807 808 pipeline atq test operation. 809 810The pipeline atq test configures the eventdev with Q queues and P ports, 811where Q and P is a function of the number of workers, the number of producers 812and number of stages as mentioned in :numref:`table_eventdev_pipeline_atq_test`. 813 814The atq queue test functions as same as ``pipeline_queue`` test. The difference 815is, It uses, ``all type queue scheme`` instead of separate queues for each 816stage and thus reduces the number of queues required to realize the use case. 817 818 819Application options 820^^^^^^^^^^^^^^^^^^^ 821 822Supported application command line options are following:: 823 824 --verbose 825 --dev 826 --test 827 --socket_id 828 --pool_sz 829 --wlcores 830 --stlist 831 --worker_deq_depth 832 --prod_type_ethdev 833 --deq_tmo_nsec 834 --nb_eth_queues 835 --enable_vector 836 --vector_size 837 --vector_tmo_ns 838 --per_port_pool 839 --tx_first 840 --tx_pkt_sz 841 842 843.. Note:: 844 845 * The ``--prod_type_ethdev`` is mandatory for running this test. 846 847Example 848^^^^^^^ 849 850Example command to run pipeline atq test: 851 852.. code-block:: console 853 854 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -- \ 855 --test=pipeline_atq --wlcore=1 --prod_type_ethdev --stlist=a 856 857Example command to run pipeline atq test with vector events: 858 859.. code-block:: console 860 861 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -- \ 862 --test=pipeline_atq --wlcore=1 --prod_type_ethdev --stlist=a \ 863 --enable_vector --vector_size 512 864