New distributor sample app user guide section for sample app ug. Signed-off-by: Siobhan Butler <siobhan.a.butler at intel.com> --- doc/guides/sample_app_ug/dist_app.rst | 173 +++++++++++ doc/guides/sample_app_ug/img/dist_app.svg | 442 +++++++++++++++++++++++++++ doc/guides/sample_app_ug/img/dist_perf.svg | 459 +++++++++++++++++++++++++++++ doc/guides/sample_app_ug/index.rst | 5 + 4 files changed, 1079 insertions(+) create mode 100644 doc/guides/sample_app_ug/dist_app.rst create mode 100644 doc/guides/sample_app_ug/img/dist_app.svg create mode 100644 doc/guides/sample_app_ug/img/dist_perf.svg
diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst new file mode 100644 index 0000000..3064ff8 --- /dev/null +++ b/doc/guides/sample_app_ug/dist_app.rst @@ -0,0 +1,173 @@ +.. BSD LICENSE + Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Distributor Sample Application +============================== + +The distributor sample application is a simple example of packet distribution +to cores using the Data Plane Development Kit (DPDK). + +Overview +-------- + +The distributor application performs the distribution of packets that are received +on an RX_PORT to different cores. When processed by the cores, the destination +port of a packet is the port from the enabled port mask adjacent to the one on +which the packet was received, that is, if the first four ports are enabled +(port mask 0xf), ports 0 and 1 RX/TX into each other, and ports 2 and 3 RX/TX +into each other. + +This application can be used to benchmark performance using the traffic +generator as shown in the figure below. + +.. _figure_22: + +**Figure 22. Performance Benchmarking Setup (Basic Environment)** + +|dist_perf| + +Compiling the Application +------------------------- + +#. Go to the sample application directory: + + .. code-block:: console + + export RTE_SDK=/path/to/rte_sdk + cd ${RTE_SDK}/examples/l3fwd-acl + +#. Set the target (a default target is used if not specified). For example: + + .. code-block:: console + + export RTE_TARGET=x86_64-native-linuxapp-gcc + + See the DPDK Getting Started Guide for possible RTE_TARGET values. + +#. Build the application: + + .. code-block:: console + + make + +Running the Application +----------------------- + +#. The application has a number of command line options: + +.. code-block:: console + + ./build/distributor_app [EAL options] -- -p PORTMASK + +where, + +* -p PORTMASK: Hexadecimal bitmask of ports to configure + +#. To run the application in linuxapp environment with 11 lcores, 4 ports, +issue the command: + +.. code-block:: console + + $ ./build/distributor_app -c 0x4003fe -n 4 -- -p f + +#. Refer to the DPDK Getting Started Guide for general information on running +applications and the Environment Abstraction Layer (EAL) options. + +Explanation +----------- + +The distributor application consists of three types of threads: a receive +thread (lcore_rx()), a set of worker threads(locre_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. +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). + +The receive thread receives the packets using rte_eth_rx_burst()and gives +them to the distributor (using rte_distributor_process() API) which will +be called in context of the receive thread itself. The distributor distributes +the packets to workers threads based on the tagging of the packet - +indicated by the hash field in the mbuf. For IP traffic, this field is +automatically filled by the NIC with the "usr" hash value for the packet, +which works as a per-flow tag. + +More than one worker thread can exist as part of the application, and these +worker threads do simple packet processing by requesting packets from +the distributor, doing a simple XOR operation on the input port mbuf field +(to indicate the output port which will be used later for packet transmission) +and then finally returning the packets back to the distributor in the RX thread. + +Meanwhile, the receive thread will call the distributor api +rte_distributor_returned_pkts() to get the packets processed, and will enqueue +them to a ring for transfer to the TX thread for transmission on the output port. +The transmit thread will dequeue the packets from the ring and transmit them on +the output port specified in packet mbuf. + +Users who wish to terminate the running of the application have to press ctrl+C +(or send SIGINT to the app). Upon this signal, a signal handler provided +in the application will terminate all running threads gracefully and print +final statistics to the user. + +.. _figure_23: + +**Figure 23.Distributor Sample Application Layout** + +|dist_app| + +Debug Logging Support +--------------------- + +Debug logging is provided as part of the application; the user needs to uncomment +the line "#define DEBUG" defined in start of the application in main.c to enable debug logs. + +Statistics +---------- + +Upon SIGINT (or) ctrl+C, the print_stats() function displays the count of packets +processed at the different stages in the application. + +Application Initialization +-------------------------- + +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". +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". +Driver Initialization is done in same way as it is done in the L2 Forwarding Sample +Application. See Section 9.4.3, "Driver Initialization". +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". +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 diff --git a/doc/guides/sample_app_ug/img/dist_app.svg b/doc/guides/sample_app_ug/img/dist_app.svg new file mode 100644 index 0000000..3bb912b --- /dev/null +++ b/doc/guides/sample_app_ug/img/dist_app.svg @@ -0,0 +1,442 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="526.94379" + height="379.53668" + id="svg4090" + version="1.1" + inkscape:version="0.48.5 r10040" + sodipodi:docname="New document 2"> + <defs + id="defs4092"> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path10501" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4017" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4019" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4021" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4023" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4025" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4027" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4029" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4031" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4033" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4035" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path10498" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4039" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4041" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4043" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4045" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4047" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4049" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="339.92174" + inkscape:cy="120.32038" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata4095"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-35.078263,-28.308125)"> + <rect + style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697" + id="rect10443" + width="152.9641" + height="266.92566" + x="122.95611" + y="34.642567" /> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:0.98412697" + id="rect10445" + width="124.71397" + height="46.675529" + x="435.7746" + y="28.808125" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697" + id="rect10445-2" + width="124.71397" + height="46.675529" + x="435.42999" + y="103.92654" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697" + id="rect10445-0" + width="124.71397" + height="46.675529" + x="436.80811" + y="178.31572" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697" + id="rect10445-9" + width="124.71397" + height="46.675529" + x="436.80811" + y="246.87038" /> + <rect + style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697" + id="rect10445-7" + width="124.71397" + height="46.675529" + x="135.7057" + y="360.66928" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="M 277.293,44.129101 433.02373,43.388655" + id="path10486" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="m 277.83855,110.78109 155.73073,-0.74044" + id="path10486-2" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="m 278.48623,189.32721 155.73073,-0.74042" + id="path10486-1" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="m 278.48623,255.19448 155.73073,-0.74043" + id="path10486-4" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="M 277.11852,66.041829 432.84924,65.301384" + id="path10486-0" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="M 277.46746,136.71727 433.1982,135.97682" + id="path10486-0-4" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 276.77843,210.37709 155.73073,-0.74044" + id="path10486-0-7" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="M 277.46746,282.5783 433.1982,281.83785" + id="path10486-0-77" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="348.03241" + y="34.792767" + id="text11995" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997" + x="348.03241" + y="34.792767">Request packet</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="349.51935" + y="74.044792" + id="text11995-7" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3" + x="349.51935" + y="74.044792">Mbuf pointer</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="504.26611" + y="52.165989" + id="text11995-7-3" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-5" + x="504.26611" + y="52.165989">WorkerThread1</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="501.65793" + y="121.54361" + id="text11995-7-3-9" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-5-9" + x="501.65793" + y="121.54361">WorkerThread2</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="499.45868" + y="191.46367" + id="text11995-7-3-8" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-5-1" + x="499.45868" + y="191.46367">WorkerThread3</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="500.1918" + y="257.9563" + id="text11995-7-3-82" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-5-6" + x="500.1918" + y="257.9563">WorkerThreadN</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="193.79703" + y="362.85193" + id="text11995-7-3-6" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-5-0" + x="193.79703" + y="362.85193">TX thread</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="162.2476" + y="142.79382" + id="text11995-7-3-3" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-5-8" + x="162.2476" + y="142.79382">RX thread & Distributor</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.75945646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 35.457991,109.77995 85.546359,-0.79004" + id="path10486-0-4-5" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.75945646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 135.70569,384.00706 -85.546361,0.79003" + id="path10486-0-4-5-7" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="58.296661" + y="96.037407" + id="text11995-7-8" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-3" + x="58.296661" + y="96.037407">Mbufs In</tspan></text> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="83.4814" + y="352.62543" + id="text11995-7-8-5" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + id="tspan11997-3-3-1" + x="83.4814" + y="352.62543">Mbufs Out</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:1.05720723;stroke-miterlimit:3;stroke-opacity:0.98412697;stroke-dasharray:none" + d="m 171.68192,303.16236 0.21464,30.4719 -8.6322,0.40574 -11.33877,0.1956 25.75778,14.79103 23.25799,11.11792 18.87014,-7.32926 31.83305,-17.26495 -10.75831,-0.32986 -10.37586,-0.44324 -0.22443,-31.54093 z" + id="path12188" + inkscape:connector-curvature="0" + inkscape:transform-center-y="7.6863474" + sodipodi:nodetypes="cccccccccccc" /> + <text + xml:space="preserve" + style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="193.68871" + y="309.26349" + id="text11995-7-3-6-2" + sodipodi:linespacing="125%" + transform="scale(0.93992342,1.0639165)"><tspan + sodipodi:role="line" + x="193.68871" + y="309.26349" + id="tspan12214">SW Ring</tspan></text> + </g> +</svg> diff --git a/doc/guides/sample_app_ug/img/dist_perf.svg b/doc/guides/sample_app_ug/img/dist_perf.svg new file mode 100644 index 0000000..5a2720b --- /dev/null +++ b/doc/guides/sample_app_ug/img/dist_perf.svg @@ -0,0 +1,459 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="524.65625" + height="387.59375" + id="svg4116" + version="1.1" + inkscape:version="0.48.5 r10040" + sodipodi:docname="New document 2"> + <defs + id="defs4118"> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path10498" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path10501" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4038" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4040" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4042" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4044" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4046" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4048" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4050" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4052" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4054" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4056" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4058" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4060" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4062" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4064" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4066" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4068" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker4070" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4072" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.4,0,0,-0.4,-4,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker4074" + style="overflow:visible"> + <path + inkscape:connector-curvature="0" + id="path4076" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(0.4,0,0,0.4,4,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="354.46875" + inkscape:cy="78.904643" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:window-width="1920" + inkscape:window-height="1017" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata4121"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-20.53125,-22.84375)"> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:0.98412697" + id="rect10443" + width="165.52779" + height="376.84436" + x="21.023544" + y="24.286175" /> + <rect + style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:0.98412697" + id="rect10445" + width="156.95697" + height="386.59042" + x="387.73376" + y="23.352676" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="m 188.27904,66.970932 195.99264,0.833121" + id="path10486" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="M 188.05945,91.53983 384.0521,90.566545" + id="path10486-0" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="460.4104" + y="292.91855" + id="text11995" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + x="460.4104" + y="292.91855" + id="tspan12218">Port2</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="459.06958" + y="59.738571" + id="text11995-7" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + id="tspan11997-3" + x="459.06958" + y="59.738571">Port0</tspan></text> + <text + xml:space="preserve" + style="font-size:15.28272438px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="474.06027" + y="184.77933" + id="text11995-7-3" + sodipodi:linespacing="125%" + transform="scale(0.8986678,1.1127582)"><tspan + sodipodi:role="line" + id="tspan11997-3-5" + x="474.06027" + y="184.77933">DPDK board</tspan></text> + <text + xml:space="preserve" + style="font-size:16.0002594px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="54.009655" + y="171.28656" + id="text11995-7-3-3" + sodipodi:linespacing="125%" + transform="scale(0.81894062,1.2210897)"><tspan + sodipodi:role="line" + id="tspan11997-3-5-8" + x="54.009655" + y="171.28656">Traffic Generator</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="459.46732" + y="91.195976" + id="text11995-7-8" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + id="tspan11997-3-3" + x="459.46732" + y="91.195976">Port1</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="460.15295" + y="326.05963" + id="text11995-7-3-6-2" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + x="460.15295" + y="326.05963" + id="tspan12214">Port3</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199999, 1.98399994;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline" + d="m 389.46894,68.26125 12.5232,0 c 1.5,0 3,1.5 3,3 l 0,21.198419" + id="path10486-06" + inkscape:connector-type="orthogonal" + inkscape:connector-curvature="3" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999997, 1.99999998;stroke-dashoffset:0" + d="m 398.43415,91.043274 -11.52714,0 0.98804,0" + id="path12267" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="m 190.33387,103.00575 195.99267,0.97328" + id="path10486-43" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="M 187.50304,56.857383 383.49569,55.884111" + id="path10486-0-9" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199997, 1.98399998;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline" + d="m 388.42391,103.27876 27.61666,0 c 1.5,0 3,-1.5 3,-3 l 0,-41.462569" + id="path10486-06-7" + inkscape:connector-type="orthogonal" + inkscape:connector-curvature="3" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999997, 1.99999994;stroke-dashoffset:0" + d="m 417.31173,56.402625 -26.65144,0 2.2844,0" + id="path12267-7" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="m 186.54351,319.92933 195.99264,0.83313" + id="path10486-07" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 185.45351,344.49822 195.99262,-0.97328" + id="path10486-0-3" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199997, 1.98399993;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline" + d="m 387.7334,321.21965 12.52321,0 c 1.5,0 3,1.5 3,3 l 0,21.19843" + id="path10486-06-4" + inkscape:connector-type="orthogonal" + inkscape:connector-curvature="3" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999997, 1.99999994;stroke-dashoffset:0" + d="m 396.69862,344.00166 -11.52714,0 0.98804,0" + id="path12267-9" + inkscape:connector-curvature="0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)" + d="m 190.33918,355.96416 195.99266,0.97327" + id="path10486-43-6" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)" + d="m 185.76751,309.8158 195.99266,-0.97331" + id="path10486-0-9-5" + inkscape:connector-type="polyline" + inkscape:connector-curvature="3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199997, 1.98399994;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline" + d="m 386.68838,356.23716 27.61666,0 c 1.5,0 3,-1.5 3,-3 l 0,-41.46255" + id="path10486-06-7-1" + inkscape:connector-type="orthogonal" + inkscape:connector-curvature="3" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999995, 1.99999991;stroke-dashoffset:0" + d="m 415.57618,309.36103 -26.65143,0 2.28441,0" + id="path12267-7-0" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="168.01332" + y="295.95398" + id="text11995-9" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + x="168.01332" + y="295.95398" + id="tspan12218-9">Port2</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="166.67253" + y="62.774006" + id="text11995-7-6" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + id="tspan11997-3-8" + x="166.67253" + y="62.774006">Port0</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="167.07025" + y="94.231415" + id="text11995-7-8-3" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + id="tspan11997-3-3-4" + x="167.07025" + y="94.231415">Port1</tspan></text> + <text + xml:space="preserve" + style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" + x="167.75591" + y="329.09506" + id="text11995-7-3-6-2-8" + sodipodi:linespacing="125%" + transform="scale(0.91971036,1.0872988)"><tspan + sodipodi:role="line" + x="167.75591" + y="329.09506" + id="tspan12214-4">Port3</tspan></text> + </g> +</svg> diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst index ad2ca28..47abe40 100644 --- a/doc/guides/sample_app_ug/index.rst +++ b/doc/guides/sample_app_ug/index.rst @@ -100,6 +100,7 @@ Copyright ? 2012 - 2014, Intel Corporation. All rights reserved. netmap_compatibility internet_proto_ip_pipeline test_pipeline + dist_app **Figures** @@ -147,6 +148,10 @@ Copyright ? 2012 - 2014, Intel Corporation. All rights reserved. :ref:`Figure 21.Test Pipeline Application <figure_21>` +:ref:`Figure 22.Performance Benchmarking Setup (Basic Environment) <figure_22>` + +:ref:`Figure 23.Distributor Sample Application Layout <figure_23>` + **Tables** :ref:`Table 1.Output Traffic Marking <table_1>` -- 1.9.4.msysgit.2