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 240Eventdev Tests 241-------------- 242 243ORDER_QUEUE Test 244~~~~~~~~~~~~~~~~ 245 246This is a functional test case that aims at testing the following: 247 248#. Verify the ingress order maintenance. 249#. Verify the exclusive(atomic) access to given atomic flow per eventdev port. 250 251.. _table_eventdev_order_queue_test: 252 253.. table:: Order queue test eventdev configuration. 254 255 +---+--------------+----------------+------------------------+ 256 | # | Items | Value | Comments | 257 | | | | | 258 +===+==============+================+========================+ 259 | 1 | nb_queues | 2 | q0(ordered), q1(atomic)| 260 | | | | | 261 +---+--------------+----------------+------------------------+ 262 | 2 | nb_producers | 1 | | 263 | | | | | 264 +---+--------------+----------------+------------------------+ 265 | 3 | nb_workers | >= 1 | | 266 | | | | | 267 +---+--------------+----------------+------------------------+ 268 | 4 | nb_ports | nb_workers + | Workers use port 0 to | 269 | | | 1 | port n-1. Producer uses| 270 | | | | port n | 271 +---+--------------+----------------+------------------------+ 272 273.. _figure_eventdev_order_queue_test: 274 275.. figure:: img/eventdev_order_queue_test.* 276 277 order queue test operation. 278 279The order queue test configures the eventdev with two queues and an event 280producer to inject the events to q0(ordered) queue. Both q0(ordered) and 281q1(atomic) are linked to all the workers. 282 283The event producer maintains a sequence number per flow and injects the events 284to the ordered queue. The worker receives the events from ordered queue and 285forwards to atomic queue. Since the events from an ordered queue can be 286processed in parallel on the different workers, the ingress order of events 287might have changed on the downstream atomic queue enqueue. On enqueue to the 288atomic queue, the eventdev PMD reorders the event to the original 289ingress order(i.e producer ingress order). 290 291When the event is dequeued from the atomic queue by the worker, this test 292verifies the expected sequence number of associated event per flow by comparing 293the free running expected sequence number per flow. 294 295Application options 296^^^^^^^^^^^^^^^^^^^ 297 298Supported application command line options are following:: 299 300 --verbose 301 --dev 302 --test 303 --socket_id 304 --pool_sz 305 --plcores 306 --wlcores 307 --nb_flows 308 --nb_pkts 309 --worker_deq_depth 310 --deq_tmo_nsec 311 312Example 313^^^^^^^ 314 315Example command to run order queue test: 316 317.. code-block:: console 318 319 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -s 0x10 --vdev=event_sw0 -- \ 320 --test=order_queue --plcores 1 --wlcores 2,3 321 322 323ORDER_ATQ Test 324~~~~~~~~~~~~~~ 325 326This test verifies the same aspects of ``order_queue`` test, the difference is 327the number of queues used, this test operates on a single ``all types queue(atq)`` 328instead of two different queues for ordered and atomic. 329 330.. _table_eventdev_order_atq_test: 331 332.. table:: Order all types queue test eventdev configuration. 333 334 +---+--------------+----------------+------------------------+ 335 | # | Items | Value | Comments | 336 | | | | | 337 +===+==============+================+========================+ 338 | 1 | nb_queues | 1 | q0(all types queue) | 339 | | | | | 340 +---+--------------+----------------+------------------------+ 341 | 2 | nb_producers | 1 | | 342 | | | | | 343 +---+--------------+----------------+------------------------+ 344 | 3 | nb_workers | >= 1 | | 345 | | | | | 346 +---+--------------+----------------+------------------------+ 347 | 4 | nb_ports | nb_workers + | Workers use port 0 to | 348 | | | 1 | port n-1.Producer uses | 349 | | | | port n. | 350 +---+--------------+----------------+------------------------+ 351 352.. _figure_eventdev_order_atq_test: 353 354.. figure:: img/eventdev_order_atq_test.* 355 356 order all types queue test operation. 357 358Application options 359^^^^^^^^^^^^^^^^^^^ 360 361Supported application command line options are following:: 362 363 --verbose 364 --dev 365 --test 366 --socket_id 367 --pool_sz 368 --plcores 369 --wlcores 370 --nb_flows 371 --nb_pkts 372 --worker_deq_depth 373 --deq_tmo_nsec 374 375Example 376^^^^^^^ 377 378Example command to run order ``all types queue`` test: 379 380.. code-block:: console 381 382 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -- \ 383 --test=order_atq --plcores 1 --wlcores 2,3 384 385 386PERF_QUEUE Test 387~~~~~~~~~~~~~~~ 388 389This is a performance test case that aims at testing the following: 390 391#. Measure the number of events can be processed in a second. 392#. Measure the latency to forward an event. 393 394.. _table_eventdev_perf_queue_test: 395 396.. table:: Perf queue test eventdev configuration. 397 398 +---+--------------+----------------+-----------------------------------------+ 399 | # | Items | Value | Comments | 400 | | | | | 401 +===+==============+================+=========================================+ 402 | 1 | nb_queues | nb_producers * | Queues will be configured based on the | 403 | | | nb_stages | user requested sched type list(--stlist)| 404 +---+--------------+----------------+-----------------------------------------+ 405 | 2 | nb_producers | >= 1 | Selected through --plcores command line | 406 | | | | argument. | 407 +---+--------------+----------------+-----------------------------------------+ 408 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 409 | | | | argument | 410 +---+--------------+----------------+-----------------------------------------+ 411 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n-1. | 412 | | | nb_producers | Producers use port n to port p | 413 +---+--------------+----------------+-----------------------------------------+ 414 415.. _figure_eventdev_perf_queue_test: 416 417.. figure:: img/eventdev_perf_queue_test.* 418 419 perf queue test operation. 420 421The perf queue test configures the eventdev with Q queues and P ports, where 422Q and P is a function of the number of workers, the number of producers and 423number of stages as mentioned in :numref:`table_eventdev_perf_queue_test`. 424 425The user can choose the number of workers, the number of producers and number of 426stages through the ``--wlcores``, ``--plcores`` and the ``--stlist`` application 427command line arguments respectively. 428 429The producer(s) injects the events to eventdev based on the first stage sched type 430list requested by the user through ``--stlist`` command line argument. It can 431inject a burst of events using ``--prod_enq_burst_sz`` command line argument. 432 433Based on the number of stages to process(selected through ``--stlist``), 434The application forwards the event to next upstream queue and terminates when it 435reaches the last stage in the pipeline. On event termination, application 436increments the number events processed and print periodically in one second 437to get the number of events processed in one second. 438 439When ``--fwd_latency`` command line option selected, the application inserts 440the timestamp in the event on the first stage and then on termination, it 441updates the number of cycles to forward a packet. The application uses this 442value to compute the average latency to a forward packet. 443 444When ``--prod_type_ethdev`` command line option is selected, the application 445uses the probed ethernet devices as producers by configuring them as Rx 446adapters instead of using synthetic producers. 447 448Application options 449^^^^^^^^^^^^^^^^^^^ 450 451Supported application command line options are following:: 452 453 --verbose 454 --dev 455 --test 456 --socket_id 457 --pool_sz 458 --plcores 459 --wlcores 460 --stlist 461 --nb_flows 462 --nb_pkts 463 --worker_deq_depth 464 --fwd_latency 465 --queue_priority 466 --prod_type_ethdev 467 --prod_type_timerdev_burst 468 --prod_type_timerdev 469 --prod_type_cryptodev 470 --prod_type_dmadev 471 --prod_enq_burst_sz 472 --timer_tick_nsec 473 --max_tmo_nsec 474 --expiry_nsec 475 --nb_timers 476 --nb_timer_adptrs 477 --deq_tmo_nsec 478 --crypto_adptr_mode 479 --dma_adptr_mode 480 481Example 482^^^^^^^ 483 484Example command to run perf queue test: 485 486.. code-block:: console 487 488 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x2 --vdev=event_sw0 -- \ 489 --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0 490 491Example command to run perf queue test with producer enqueuing a burst of events: 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 --prod_enq_burst_sz=32 498 499Example command to run perf queue test with ethernet ports: 500 501.. code-block:: console 502 503 sudo build/app/dpdk-test-eventdev -c 0xf -s 0x2 --vdev=event_sw0 -- \ 504 --test=perf_queue --plcores=2 --wlcore=3 --stlist=p --prod_type_ethdev 505 506Example command to run perf queue test with event timer adapter: 507 508.. code-block:: console 509 510 sudo <build_dir>/app/dpdk-test-eventdev -c 0xfff1 \ 511 -- --wlcores 4 --plcores 12 --test perf_queue --stlist=a \ 512 --prod_type_timerdev --fwd_latency 513 514Example command to run perf queue test with event DMA adapter: 515 516.. code-block:: console 517 518 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -s 0x2 \ 519 -- --test=perf_queue --plcores= 2 --wlcore=3 --stlist=a \ 520 --prod_type_dmadev --dma_adptr_mode=1 521 522PERF_ATQ Test 523~~~~~~~~~~~~~~~ 524 525This is a performance test case that aims at testing the following with 526``all types queue`` eventdev scheme. 527 528#. Measure the number of events can be processed in a second. 529#. Measure the latency to forward an event. 530 531.. _table_eventdev_perf_atq_test: 532 533.. table:: Perf all types queue test eventdev configuration. 534 535 +---+--------------+----------------+-----------------------------------------+ 536 | # | Items | Value | Comments | 537 | | | | | 538 +===+==============+================+=========================================+ 539 | 1 | nb_queues | nb_producers | Queues will be configured based on the | 540 | | | | user requested sched type list(--stlist)| 541 +---+--------------+----------------+-----------------------------------------+ 542 | 2 | nb_producers | >= 1 | Selected through --plcores command line | 543 | | | | argument. | 544 +---+--------------+----------------+-----------------------------------------+ 545 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 546 | | | | argument | 547 +---+--------------+----------------+-----------------------------------------+ 548 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n-1. | 549 | | | nb_producers | Producers use port n to port p | 550 +---+--------------+----------------+-----------------------------------------+ 551 552.. _figure_eventdev_perf_atq_test: 553 554.. figure:: img/eventdev_perf_atq_test.* 555 556 perf all types queue test operation. 557 558 559The ``all types queues(atq)`` perf test configures the eventdev with Q queues 560and P ports, where Q and P is a function of the number of workers and number of 561producers as mentioned in :numref:`table_eventdev_perf_atq_test`. 562 563 564The atq queue test functions as same as ``perf_queue`` test. The difference 565is, It uses, ``all type queue scheme`` instead of separate queues for each 566stage and thus reduces the number of queues required to realize the use case 567and enables flow pinning as the event does not move to the next queue. 568 569 570Application options 571^^^^^^^^^^^^^^^^^^^ 572 573Supported application command line options are following:: 574 575 --verbose 576 --dev 577 --test 578 --socket_id 579 --pool_sz 580 --plcores 581 --wlcores 582 --stlist 583 --nb_flows 584 --nb_pkts 585 --worker_deq_depth 586 --fwd_latency 587 --prod_type_ethdev 588 --prod_type_timerdev_burst 589 --prod_type_timerdev 590 --prod_type_cryptodev 591 --prod_type_dmadev 592 --timer_tick_nsec 593 --max_tmo_nsec 594 --expiry_nsec 595 --nb_timers 596 --nb_timer_adptrs 597 --deq_tmo_nsec 598 --crypto_adptr_mode 599 --dma_adptr_mode 600 601Example 602^^^^^^^ 603 604Example command to run perf ``all types queue`` test: 605 606.. code-block:: console 607 608 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -- \ 609 --test=perf_atq --plcores=2 --wlcore=3 --stlist=p --nb_pkts=0 610 611Example command to run perf ``all types queue`` test with event timer adapter: 612 613.. code-block:: console 614 615 sudo <build_dir>/app/dpdk-test-eventdev -c 0xfff1 \ 616 -- --wlcores 4 --plcores 12 --test perf_atq --verbose 20 \ 617 --stlist=a --prod_type_timerdev --fwd_latency 618 619Example command to run perf atq test with event DMA adapter: 620 621.. code-block:: console 622 623 sudo <build_dir>/app/dpdk-test-eventdev -c 0x1f -s 0x2 \ 624 -- --test=perf_atq --plcores= 2 --wlcore=3 --stlist=a \ 625 --prod_type_dmadev --dma_adptr_mode=1 626 627PIPELINE_QUEUE Test 628~~~~~~~~~~~~~~~~~~~ 629 630This is a pipeline test case that aims at testing the following: 631 632#. Measure the end-to-end performance of an event dev with a ethernet dev. 633#. Maintain packet ordering from Rx to Tx. 634 635.. _table_eventdev_pipeline_queue_test: 636 637.. table:: Pipeline queue test eventdev configuration. 638 639 +---+--------------+----------------+-----------------------------------------+ 640 | # | Items | Value | Comments | 641 | | | | | 642 +===+==============+================+=========================================+ 643 | 1 | nb_queues | (nb_producers | Queues will be configured based on the | 644 | | | * nb_stages) + | user requested sched type list(--stlist)| 645 | | | nb_producers | At the last stage of the schedule list | 646 | | | | the event is enqueued onto per port | 647 | | | | unique queue which is then Transmitted. | 648 +---+--------------+----------------+-----------------------------------------+ 649 | 2 | nb_producers | >= 1 | Producers will be configured based on | 650 | | | | the number of detected ethernet devices.| 651 | | | | Each ethdev will be configured as an Rx | 652 | | | | adapter. | 653 +---+--------------+----------------+-----------------------------------------+ 654 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 655 | | | | argument | 656 +---+--------------+----------------+-----------------------------------------+ 657 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n. | 658 | | | (nb_produces * | Producers use port n+1 to port n+m, | 659 | | | 2) | depending on the Rx adapter capability. | 660 | | | | Consumers use port n+m+1 to port n+o | 661 | | | | depending on the Tx adapter capability. | 662 +---+--------------+----------------+-----------------------------------------+ 663 664.. _figure_eventdev_pipeline_queue_test_generic: 665 666.. figure:: img/eventdev_pipeline_queue_test_generic.* 667 668.. _figure_eventdev_pipeline_queue_test_internal_port: 669 670.. figure:: img/eventdev_pipeline_queue_test_internal_port.* 671 672 pipeline queue test operation. 673 674The pipeline queue test configures the eventdev with Q queues and P ports, 675where Q and P is a function of the number of workers, the number of producers 676and number of stages as mentioned in :numref:`table_eventdev_pipeline_queue_test`. 677 678The user can choose the number of workers and number of stages through the 679``--wlcores`` and the ``--stlist`` application command line arguments 680respectively. 681 682The number of producers depends on the number of ethernet devices detected and 683each ethernet device is configured as a event_eth_rx_adapter that acts as a 684producer. 685 686The producer(s) injects the events to eventdev based the first stage sched type 687list requested by the user through ``--stlist`` the command line argument. 688 689Based on the number of stages to process(selected through ``--stlist``), 690The application forwards the event to next upstream queue and when it reaches 691the last stage in the pipeline if the event type is ``atomic`` it is enqueued 692onto ethdev Tx queue else to maintain ordering the event type is set to 693``atomic`` and enqueued onto the last stage queue. 694 695If the ethdev and eventdev pair have ``RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT`` 696capability then the worker cores enqueue the packets to the eventdev directly 697using ``rte_event_eth_tx_adapter_enqueue`` else the worker cores enqueue the 698packet onto the ``SINGLE_LINK_QUEUE`` that is managed by the Tx adapter. 699The Tx adapter dequeues the packet and transmits it. 700 701On packet Tx, application increments the number events processed and print 702periodically in one second to get the number of events processed in one 703second. 704 705 706Application options 707^^^^^^^^^^^^^^^^^^^ 708 709Supported application command line options are following:: 710 711 --verbose 712 --dev 713 --test 714 --socket_id 715 --pool_sz 716 --wlcores 717 --stlist 718 --worker_deq_depth 719 --prod_type_ethdev 720 --deq_tmo_nsec 721 --nb_eth_queues 722 --enable_vector 723 --vector_size 724 --vector_tmo_ns 725 --per_port_pool 726 --tx_first 727 --tx_pkt_sz 728 729 730.. Note:: 731 732 * The ``--prod_type_ethdev`` is mandatory for running this test. 733 734Example 735^^^^^^^ 736 737Example command to run pipeline queue test: 738 739.. code-block:: console 740 741 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -s 0x8 --vdev=event_sw0 -- \ 742 --test=pipeline_queue --wlcore=1 --prod_type_ethdev --stlist=a 743 744Example command to run pipeline atq test with vector events: 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 --enable_vector --vector_size 512 751 752PIPELINE_ATQ Test 753~~~~~~~~~~~~~~~~~~~ 754 755This is a pipeline test case that aims at testing the following with 756``all types queue`` eventdev scheme. 757 758#. Measure the end-to-end performance of an event dev with a ethernet dev. 759#. Maintain packet ordering from Rx to Tx. 760 761.. _table_eventdev_pipeline_atq_test: 762 763.. table:: Pipeline atq test eventdev configuration. 764 765 +---+--------------+----------------+-----------------------------------------+ 766 | # | Items | Value | Comments | 767 | | | | | 768 +===+==============+================+=========================================+ 769 | 1 | nb_queues | nb_producers + | Queues will be configured based on the | 770 | | | x | user requested sched type list(--stlist)| 771 | | | | where x = nb_producers in generic | 772 | | | | pipeline and 0 if all the ethdev | 773 | | | | being used have Internal port capability| 774 +---+--------------+----------------+-----------------------------------------+ 775 | 2 | nb_producers | >= 1 | Producers will be configured based on | 776 | | | | the number of detected ethernet devices.| 777 | | | | Each ethdev will be configured as an Rx | 778 | | | | adapter. | 779 +---+--------------+----------------+-----------------------------------------+ 780 | 3 | nb_workers | >= 1 | Selected through --wlcores command line | 781 | | | | argument | 782 +---+--------------+----------------+-----------------------------------------+ 783 | 4 | nb_ports | nb_workers + | Workers use port 0 to port n. | 784 | | | nb_producers + | Producers use port n+1 to port n+m, | 785 | | | x | depending on the Rx adapter capability. | 786 | | | | x = nb_producers in generic pipeline and| 787 | | | | 0 if all the ethdev being used have | 788 | | | | Internal port capability. | 789 | | | | Consumers may use port n+m+1 to port n+o| 790 | | | | depending on the Tx adapter capability. | 791 +---+--------------+----------------+-----------------------------------------+ 792 793.. _figure_eventdev_pipeline_atq_test_generic: 794 795.. figure:: img/eventdev_pipeline_atq_test_generic.* 796 797.. _figure_eventdev_pipeline_atq_test_internal_port: 798 799.. figure:: img/eventdev_pipeline_atq_test_internal_port.* 800 801 pipeline atq test operation. 802 803The pipeline atq test configures the eventdev with Q queues and P ports, 804where Q and P is a function of the number of workers, the number of producers 805and number of stages as mentioned in :numref:`table_eventdev_pipeline_atq_test`. 806 807The atq queue test functions as same as ``pipeline_queue`` test. The difference 808is, It uses, ``all type queue scheme`` instead of separate queues for each 809stage and thus reduces the number of queues required to realize the use case. 810 811 812Application options 813^^^^^^^^^^^^^^^^^^^ 814 815Supported application command line options are following:: 816 817 --verbose 818 --dev 819 --test 820 --socket_id 821 --pool_sz 822 --wlcores 823 --stlist 824 --worker_deq_depth 825 --prod_type_ethdev 826 --deq_tmo_nsec 827 --nb_eth_queues 828 --enable_vector 829 --vector_size 830 --vector_tmo_ns 831 --per_port_pool 832 --tx_first 833 --tx_pkt_sz 834 835 836.. Note:: 837 838 * The ``--prod_type_ethdev`` is mandatory for running this test. 839 840Example 841^^^^^^^ 842 843Example command to run pipeline atq test: 844 845.. code-block:: console 846 847 sudo <build_dir>/app/dpdk-test-eventdev -c 0xf -- \ 848 --test=pipeline_atq --wlcore=1 --prod_type_ethdev --stlist=a 849 850Example command to run pipeline atq test with vector events: 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 --enable_vector --vector_size 512 857