This application can be used to benchmark performance using the traffic
generator as shown in the figure below.
-.. _figure_22:
+.. _figure_dist_perf:
-**Figure 22. Performance Benchmarking Setup (Basic Environment)**
+.. figure:: img/dist_perf.*
+
+ Performance Benchmarking Setup (Basic Environment)
-|dist_perf|
Compiling the Application
-------------------------
.. code-block:: console
export RTE_SDK=/path/to/rte_sdk
- cd ${RTE_SDK}/examples/l3fwd-acl
+ cd ${RTE_SDK}/examples/distributor
#. Set the target (a default target is used if not specified). For example:
* -p PORTMASK: Hexadecimal bitmask of ports to configure
-#. To run the application in linuxapp environment with 11 lcores, 4 ports,
+#. To run the application in linuxapp environment with 10 lcores, 4 ports,
issue the command:
.. code-block:: console
- $ ./build/distributor_app -c 0x4003fe -n 4 -- -p f
+ $ ./build/distributor_app -l 1-9,22 -n 4 -- -p f
#. Refer to the DPDK Getting Started Guide for general information on running
applications and the Environment Abstraction Layer (EAL) options.
-----------
The distributor application consists of three types of threads: a receive
-thread (lcore_rx()), a set of worker threads(locre_worker())
+thread (lcore_rx()), a set of worker threads(lcore_worker())
and a transmit thread(lcore_tx()). How these threads work together is shown
-in Fig2 below. The main() function launches threads of these three types.
+in :numref:`figure_dist_app` below. The main() function launches threads of these three types.
Each thread has a while loop which will be doing processing and which is
terminated only upon SIGINT or ctrl+C. The receive and transmit threads
communicate using a software ring (rte_ring structure).
in the application will terminate all running threads gracefully and print
final statistics to the user.
-.. _figure_23:
+.. _figure_dist_app:
+
+.. figure:: img/dist_app.*
-**Figure 23. Distributor Sample Application Layout**
+ Distributor Sample Application Layout
-|dist_app|
Debug Logging Support
---------------------
--------------------------
Command line parsing is done in the same way as it is done in the L2 Forwarding Sample
-Application. See Section 9.4.1, "Command Line Arguments".
+Application. See :ref:`l2_fwd_app_cmd_arguments`.
Mbuf pool initialization is done in the same way as it is done in the L2 Forwarding
-Sample Application. See Section 9.4.2, "Mbuf Pool Initialization".
+Sample Application. See :ref:`l2_fwd_app_mbuf_init`.
Driver Initialization is done in same way as it is done in the L2 Forwarding Sample
-Application. See Section 9.4.3, "Driver Initialization".
+Application. See :ref:`l2_fwd_app_dvr_init`.
RX queue initialization is done in the same way as it is done in the L2 Forwarding
-Sample Application. See Section 9.4.4, "RX Queue Initialization".
+Sample Application. See :ref:`l2_fwd_app_rx_init`.
TX queue initialization is done in the same way as it is done in the L2 Forwarding
-Sample Application. See Section 9.4.5, "TX Queue Initialization".
-
-.. |dist_perf| image:: img/dist_perf.svg
-
-.. |dist_app| image:: img/dist_app.svg
+Sample Application. See :ref:`l2_fwd_app_tx_init`.