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