app/flow-perf: export some config as runtime options
[dpdk.git] / doc / guides / tools / flow-perf.rst
index 69cdd1b..0855f88 100644 (file)
@@ -5,29 +5,28 @@ Flow Performance Tool
 =====================
 
 Application for rte_flow performance testing.
-The application provide the ability to test insertion rate of specific
-rte_flow rule, by stressing it to the NIC, and calculate the insertion
-rate.
+The application provides the ability to test insertion rate of specific
+rte_flow rule, by stressing it to the NIC, and calculates the insertion
+and deletion rates.
 
-The application offers some options in the command line, to configure
-which rule to apply.
+The application allows to configure which rule to apply through several
+options of the command line.
 
 After that the application will start producing rules with same pattern
 but increasing the outer IP source address by 1 each time, thus it will
 give different flow each time, and all other items will have open masks.
 
-The application also provide the ability to measure rte flow deletion rate,
-in addition to memory consumption before and after the flows creation.
+To assess the rule insertion rate, the flow performance tool breaks
+down the entire number of flow rule operations into windows of fixed size
+(defaults to 100000 flow rule operations per window, but can be configured).
+Then, the flow performance tool measures the total time per window and
+computes an average time across all windows.
 
-The app supports single and multi core performance measurements.
+The application also provides the ability to measure rte flow deletion rate,
+in addition to memory consumption before and after the flow rules' creation.
 
-
-Known Limitations
------------------
-
-The current version has limitations which can be removed in future:
-
-* Single core insertion only.
+The app supports single and multiple core performance measurements, and
+support multiple cores insertion/deletion as well.
 
 
 Compiling the Application
@@ -59,21 +58,31 @@ with a ``--`` separator:
 
 .. code-block:: console
 
-       sudo ./dpdk-test-flow_perf -n 4 -w 08:00.0 -- --ingress --ether --ipv4 --queue --flows-count=1000000
+       sudo ./dpdk-test-flow_perf -n 4 -a 08:00.0 -- --ingress --ether --ipv4 --queue --rules-count=1000000
 
 The command line options are:
 
 *      ``--help``
        Display a help message and quit.
 
-*      ``--flows-count=N``
-       Set the number of needed flows to insert,
-       where 1 <= N <= "number of flows".
+*      ``--rules-count=N``
+       Set the total number of flow rules to insert,
+       where 1 <= N <= "number of flow rules".
        The default value is 4,000,000.
 
+*      ``--rules-batch=N``
+       Set the number of flow rules to insert per iteration window,
+       where 1 <= N <= "number of flow rules per iteration window".
+       The default value is 100,000 flow rules per iteration window.
+       For a total of --rules-count=1000000 flow rules to be inserted
+       and an iteration window size of --rules-batch=100000 flow rules,
+       the application will measure the insertion rate 10 times
+       (i.e., once every 100000 flow rules) and then report an average
+       insertion rate across the 10 measurements.
+
 *      ``--dump-iterations``
-       Print rates for each iteration of flows.
-       Default iteration is 1,00,000.
+       Print rates for each iteration window.
+       Default iteration window equals to the rules-batch size (i.e., 100,000).
 
 *      ``--deletion-rate``
        Enable deletion rate calculations.
@@ -84,6 +93,42 @@ The command line options are:
 *      ``--enable-fwd``
        Enable packets forwarding after insertion/deletion operations.
 
+*      ``--portmask=N``
+       hexadecimal bitmask of ports to be used.
+
+*      ``--cores=N``
+       Set the number of needed cores to insert/delete rte_flow rules.
+       Default cores count is 1.
+
+*      ``--meter-profile-alg``
+       Set the traffic metering algorithm.
+       Example: meter-profile-alg=srtcmp, default algorithm is srtcm_rfc2697
+
+*      ``--unique-data``
+       Flag to set using unique data for all actions that support data,
+       Such as header modify and encap actions. Default is using fixed
+       data for any action that support data for all flows.
+
+*      ``--rxq=N``
+       Set the count of receive queues, default is 1.
+
+*      ``--txq=N``
+       Set the count of send queues, default is 1.
+
+*      ``--rxd=N``
+       Set the count of rxd, default is 256.
+
+*      ``--txd=N``
+       Set the count of txd, default is 256.
+
+*      ``--mbuf-size=N``
+       Set the size of mbuf, default size is 2048.
+
+*      ``--mbuf-cache-size=N``
+       Set the size of mbuf cache, default size is 512.
+
+*      ``--total-mbuf-count=N``
+       Set the count of total mbuf number, default count is 32000.
 
 Attributes:
 
@@ -172,6 +217,12 @@ Items:
        under ``TAG_INDEX`` with full mask, default value = 0.
        Other fields are open mask.
 
+*      ``--icmpv4``
+       Add icmpv4 item to all flows items, This item have open mask.
+
+*      ``--icmpv6``
+       Add icmpv6 item to all flows items, This item have open mask.
+
 
 Actions:
 
@@ -306,3 +357,25 @@ Actions:
 
 *      ``--flag``
        Add flag action to all flows actions.
+
+*      ``--raw-encap=<DATA>``
+       Add raw encap action to all flows actions.
+       Data is the data needed to be encaped, with fixed values.
+       Example: raw-encap=ether,ipv4,udp,vxlan
+
+*      ``--raw-decap=<DATA>``
+       Add raw decap action to all flows actions.
+       Data is the data needed to be decaped, with fixed values.
+       Example: raw-decap=ether,ipv4,gre
+
+*      ``--vxlan-encap``
+       Add vxlan encap action to all flows actions.
+       Data to encap is fixed with pattern: ether,ipv4,udp,vxlan,
+       all encapped items have fixed values.
+
+*      ``--vxlan-decap``
+       Add vxlan decap action to all flows actions.
+
+*       ``--meter``
+        Add meter action to all flows actions.
+        Currently, 1 meter profile -> N meter rules -> N rte flows.