summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYaroslav Brustinov <ybrustin@cisco.com>2016-10-11 06:28:37 +0300
committerHanoh Haim <hhaim@cisco.com>2016-10-13 19:39:52 +0300
commit2441faec09013a9b222a9b1c5d3e4f858e15817b (patch)
treea982c0b356c8b949248aac6cf6616e15ef12b1ba
parent46531ad0637c3585a9b55569762ef8a84d9fc5b0 (diff)
stl 40G bench
-rwxr-xr-ximages/128_nodrop.pngbin0 -> 40822 bytes
-rwxr-xr-ximages/128_util.pngbin0 -> 40877 bytes
-rwxr-xr-ximages/1514_nodrop.pngbin0 -> 44913 bytes
-rwxr-xr-ximages/1514_util.pngbin0 -> 40567 bytes
-rwxr-xr-ximages/590_nodrop.pngbin0 -> 41542 bytes
-rwxr-xr-ximages/590_util.pngbin0 -> 40506 bytes
-rwxr-xr-ximages/64_nodrop.pngbin0 -> 40877 bytes
-rwxr-xr-ximages/64_util.pngbin0 -> 41139 bytes
-rwxr-xr-ximages/icons/callouts/1.pngbin329 -> 183 bytes
-rwxr-xr-ximages/icons/callouts/10.pngbin361 -> 229 bytes
-rwxr-xr-ximages/icons/callouts/11.pngbin565 -> 223 bytes
-rwxr-xr-ximages/icons/callouts/12.pngbin617 -> 237 bytes
-rwxr-xr-ximages/icons/callouts/13.pngbin623 -> 238 bytes
-rwxr-xr-ximages/icons/callouts/14.pngbin411 -> 245 bytes
-rwxr-xr-ximages/icons/callouts/15.pngbin640 -> 251 bytes
-rwxr-xr-ximages/icons/callouts/2.pngbin353 -> 209 bytes
-rwxr-xr-ximages/icons/callouts/3.pngbin350 -> 211 bytes
-rwxr-xr-ximages/icons/callouts/4.pngbin345 -> 204 bytes
-rwxr-xr-ximages/icons/callouts/5.pngbin348 -> 206 bytes
-rwxr-xr-ximages/icons/callouts/6.pngbin355 -> 219 bytes
-rwxr-xr-ximages/icons/callouts/7.pngbin344 -> 199 bytes
-rwxr-xr-ximages/icons/callouts/8.pngbin357 -> 219 bytes
-rwxr-xr-ximages/icons/callouts/9.pngbin357 -> 228 bytes
-rwxr-xr-xtrex_stateless.asciidoc6
-rwxr-xr-xtrex_stateless_bench.asciidoc149
-rwxr-xr-xws_main.py3
26 files changed, 157 insertions, 1 deletions
diff --git a/images/128_nodrop.png b/images/128_nodrop.png
new file mode 100755
index 00000000..e2a4c59a
--- /dev/null
+++ b/images/128_nodrop.png
Binary files differ
diff --git a/images/128_util.png b/images/128_util.png
new file mode 100755
index 00000000..7dd7627e
--- /dev/null
+++ b/images/128_util.png
Binary files differ
diff --git a/images/1514_nodrop.png b/images/1514_nodrop.png
new file mode 100755
index 00000000..34902725
--- /dev/null
+++ b/images/1514_nodrop.png
Binary files differ
diff --git a/images/1514_util.png b/images/1514_util.png
new file mode 100755
index 00000000..7ad7d4da
--- /dev/null
+++ b/images/1514_util.png
Binary files differ
diff --git a/images/590_nodrop.png b/images/590_nodrop.png
new file mode 100755
index 00000000..569bb9e7
--- /dev/null
+++ b/images/590_nodrop.png
Binary files differ
diff --git a/images/590_util.png b/images/590_util.png
new file mode 100755
index 00000000..892caf0b
--- /dev/null
+++ b/images/590_util.png
Binary files differ
diff --git a/images/64_nodrop.png b/images/64_nodrop.png
new file mode 100755
index 00000000..7dd7627e
--- /dev/null
+++ b/images/64_nodrop.png
Binary files differ
diff --git a/images/64_util.png b/images/64_util.png
new file mode 100755
index 00000000..d3b6807e
--- /dev/null
+++ b/images/64_util.png
Binary files differ
diff --git a/images/icons/callouts/1.png b/images/icons/callouts/1.png
index 7d473430..054ea07a 100755
--- a/images/icons/callouts/1.png
+++ b/images/icons/callouts/1.png
Binary files differ
diff --git a/images/icons/callouts/10.png b/images/icons/callouts/10.png
index 997bbc82..8833bd59 100755
--- a/images/icons/callouts/10.png
+++ b/images/icons/callouts/10.png
Binary files differ
diff --git a/images/icons/callouts/11.png b/images/icons/callouts/11.png
index ce47dac3..d77914d8 100755
--- a/images/icons/callouts/11.png
+++ b/images/icons/callouts/11.png
Binary files differ
diff --git a/images/icons/callouts/12.png b/images/icons/callouts/12.png
index 31daf4e2..ac9f8af7 100755
--- a/images/icons/callouts/12.png
+++ b/images/icons/callouts/12.png
Binary files differ
diff --git a/images/icons/callouts/13.png b/images/icons/callouts/13.png
index 14021a89..e5e62a1f 100755
--- a/images/icons/callouts/13.png
+++ b/images/icons/callouts/13.png
Binary files differ
diff --git a/images/icons/callouts/14.png b/images/icons/callouts/14.png
index 64014b75..f55ef966 100755
--- a/images/icons/callouts/14.png
+++ b/images/icons/callouts/14.png
Binary files differ
diff --git a/images/icons/callouts/15.png b/images/icons/callouts/15.png
index 0d65765f..fee9beda 100755
--- a/images/icons/callouts/15.png
+++ b/images/icons/callouts/15.png
Binary files differ
diff --git a/images/icons/callouts/2.png b/images/icons/callouts/2.png
index 5d09341b..b05ad9c7 100755
--- a/images/icons/callouts/2.png
+++ b/images/icons/callouts/2.png
Binary files differ
diff --git a/images/icons/callouts/3.png b/images/icons/callouts/3.png
index ef7b7004..9ce22b7d 100755
--- a/images/icons/callouts/3.png
+++ b/images/icons/callouts/3.png
Binary files differ
diff --git a/images/icons/callouts/4.png b/images/icons/callouts/4.png
index adb8364e..03d55928 100755
--- a/images/icons/callouts/4.png
+++ b/images/icons/callouts/4.png
Binary files differ
diff --git a/images/icons/callouts/5.png b/images/icons/callouts/5.png
index 4d7eb460..710b57cc 100755
--- a/images/icons/callouts/5.png
+++ b/images/icons/callouts/5.png
Binary files differ
diff --git a/images/icons/callouts/6.png b/images/icons/callouts/6.png
index 0ba694af..65ce9b91 100755
--- a/images/icons/callouts/6.png
+++ b/images/icons/callouts/6.png
Binary files differ
diff --git a/images/icons/callouts/7.png b/images/icons/callouts/7.png
index 472e96f8..07bc7f1c 100755
--- a/images/icons/callouts/7.png
+++ b/images/icons/callouts/7.png
Binary files differ
diff --git a/images/icons/callouts/8.png b/images/icons/callouts/8.png
index 5e60973c..fc640cab 100755
--- a/images/icons/callouts/8.png
+++ b/images/icons/callouts/8.png
Binary files differ
diff --git a/images/icons/callouts/9.png b/images/icons/callouts/9.png
index a0676d26..5bbc0ad9 100755
--- a/images/icons/callouts/9.png
+++ b/images/icons/callouts/9.png
Binary files differ
diff --git a/trex_stateless.asciidoc b/trex_stateless.asciidoc
index 0b6ad8f7..f3ae85b3 100755
--- a/trex_stateless.asciidoc
+++ b/trex_stateless.asciidoc
@@ -5,7 +5,7 @@ TRex Stateless support
:revnumber: 2.01
:quotes.++:
:numbered:
-:web_server_url: http://trex-tgn.cisco.com/trex
+:web_server_url: https://trex-tgn.cisco.com/trex
:local_web_server_url: csi-wiki-01:8181/trex
:github_stl_path: https://github.com/cisco-system-traffic-generator/trex-core/tree/master/scripts/stl
:github_stl_examples_path: https://github.com/cisco-system-traffic-generator/trex-core/tree/master/scripts/automation/trex_control_plane/stl/examples
@@ -4054,6 +4054,10 @@ The followig keyboard commands operate in the TUI window: +
c - Clear all counters +
d, s, l - change display between dashboard (d), streams (s) and l (latency) info. +
+=== Benchmarks of 40G NICs
+
+link:trex_stateless_bench.html[TRex stateless benchmarks]
+
=== Appendix
==== Scapy packet examples
diff --git a/trex_stateless_bench.asciidoc b/trex_stateless_bench.asciidoc
new file mode 100755
index 00000000..0ddcb35d
--- /dev/null
+++ b/trex_stateless_bench.asciidoc
@@ -0,0 +1,149 @@
+TRex Stateless support
+======================
+:email: trex.tgen@gmail.com
+:quotes.++:
+:numbered:
+:web_server_url: https://trex-tgn.cisco.com/trex
+:local_web_server_url: csi-wiki-01:8181/trex
+:toclevels: 6
+:tabledef-default.subs: normal,callouts
+
+include::trex_ga.asciidoc[]
+
+// PDF version - image width variable
+ifdef::backend-docbook[]
+:p_width: 450
+endif::backend-docbook[]
+
+// HTML version - image width variable
+ifdef::backend-xhtml11[]
+:p_width: 800
+endif::backend-xhtml11[]
+
+
+== TRex stateless L2 benchmarks using XL710 40G NICs
+
+=== Setup details
+
+[cols="1,5"]
+|=================
+| Server: | UCSC-C240-M4SX
+| CPU: | 2 x Intel(R) Xeon(R) CPU E5-2667 v3 @ 3.20GHz
+| RAM: | 65536 @ 2133 MHz
+| NICs: | 2 x Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 01)
+| QSFP: | Cisco QSFP-H40G-AOC1M
+| OS: | Fedora 18
+| Switch: | Cisco Nexus 3172 Chassis, System version: 6.0(2)U5(2).
+| TRex: | v2.09 using 7 cores per dual interface.
+|=================
+
+=== Topology
+
+TRex port 1 &#8596; Switch port Eth1/50 (vlan 1005) &#8596; Switch port Eth1/52 (vlan 1005) &#8596; TRex port 2
+
+=== Results
+
+.Cached VM
+[cols="2,2^,2^,2^,2^,2^,2^,2^,3", options="header"]
+|=================
+| Packet size | Line Utilization (%) | Total L1 (Gb/s) | Total L2 (Gb/s) | CPU Util (%) | Total MPPS | BW per core (Gb/s) <1> | MPPS per core <2> | Multiplier
+| Imix | 100.04 | 80.03 | 76.03 | 2.7 | 25.03 | 89.74 | 28.07 | 100%
+| 1514 | 100.12 | 80.1 | 79.05 | 1.33 | 6.53 | 430.18 | 35.07 | 100%
+| 590 | 99.36 | 79.49 | 76.89 | 3.2 | 16.29 | 177.43 | 36.36 | 99.5%
+| 128 | 99.56 | 79.65 | 68.89 | 15.4 | 67.27 | 36.94 | 31.2 | 99.5%
+| 64 | 52.8 | 42.3 | 32.23 | 14.1 | 62.95 | 21.43 | 31.89 | 31.5mpps
+|=================
+
+.VM with 1 variable
+[cols="2,2^,2^,2^,2^,2^,2^,2^,3", options="header"]
+|=================
+| Packet size | Line Utilization (%) | Total L1 (Gb/s) | Total L2 (Gb/s) | CPU Util (%) | Total MPPS | BW per core (Gb/s) <1> | MPPS per core <2> | Multiplier
+| Imix | 100.04 | 80.03 | 76.03 | 12.6 | 25.03 | 45.37 | 14.19 | 100%
+| 1514 | 100.12 | 80.1 | 79.05 | 2.6 | 6.53 | 220.05 | 17.94 | 100%
+| 590 | 99.36 | 79.49 | 76.89 | 5.6 | 16.29 | 101.39 | 20.78 | 99.5%
+| 128 | 99.56 | 79.65 | 68.89 | 33.1 | 67.27 | 17.19 | 14.52 | 99.5%
+| 64 | 52.8 | 42.3 | 32.23 | 31.3 | 63.06 | 9.65 | 14.37 | 31.5mpps
+|=================
+
+<1> Extrapolated L1 bandwidth per 1 core @ 100% CPU utilization.
+<2> Extrapolated amount of MPPS per 1 core @ 100% CPU utilization.
+
+== Appendix
+
+=== Preparing setup and running the tests.
+
+==== Hardware preparations
+
+Order the UCS with HW described above.
+
+* There are several NICs with this chipset. +
+Bare Intel NICs don't work with Cisco QSFP+ optics, for such case you will need Silicom NICs.
+* Use NICs with 2x40G ports in each.
+* Put the NICs at different NUMAs (first on the left side, second on the right side).
+
+==== Software preparations
+
+* Install the OS (Bare metal Linux, *not* VM!)
+* Obtain the latest TRex package: wget https://trex-tgn.cisco.com/trex/release/latest
+* Untar the package: tar -xzf latest
+* Change dir to unzipped TRex
+* Create config file using command: sudo python dpdk_setup_ports.py -i
+** In case of Ubuntu 16 need python3
+** The script by default produces config for loopback or L2 Switch as DUT (ports connection 1&#8596;2, 3&#8596;4 etc.). +
+If you have router or L3 switch, change the destination MACs of TRex interfaces to match the DUT one's.
+
+==== The tests
+
+* Run the TRex server: sudo ./t-rex-64 -i -c 7
+* In another shell run TRex console: trex-console
+** The console can be run from another computer with -s argument, --help for more info.
+** Other options for TRex client are automation or GUI
+* In the console, run "tui" command, and then send the traffic with commands like:
+** start -f stl/bench.py -m 50% --port 0 3 -t size=590,vm=var1
+** stop
+** clear
+** start -f stl/bench.py -m 30mpps --port 0 -t size=64,vm=cached
+** start -f stl/bench.py -m 100% -t size=1514,vm=random --force
+
+=== Some of screenshots of console with commands
+
+==== 64 bytes
+
+Utilization:
+
+image:images/64_util.png[title="64 bytes util",align="left",width={p_width}, link="images/64_util.png"]
+
+No drops:
+
+image:images/64_nodrop.png[title="64 bytes no drops",align="left",width={p_width}, link="images/64_nodrop.png"]
+
+==== 128 bytes
+
+Utilization:
+
+image:images/128_util.png[title="128 bytes util",align="left",width={p_width}, link="images/128_util.png"]
+
+No drops:
+
+image:images/128_nodrop.png[title="128 bytes no drops",align="left",width={p_width}, link="images/128_nodrop.png"]
+
+==== 590 bytes
+
+Utilization:
+
+image:images/590_util.png[title="128 bytes util",align="left",width={p_width}, link="images/590_util.png"]
+
+No drops:
+
+image:images/590_nodrop.png[title="590 bytes no drops",align="left",width={p_width}, link="images/590_nodrop.png"]
+
+==== 1514 bytes
+
+Utilization:
+
+image:images/1514_util.png[title="128 bytes util",align="left",width={p_width}, link="images/1514_util.png"]
+
+No drops:
+
+image:images/1514_nodrop.png[title="1514 bytes no drops",align="left",width={p_width}, link="images/1514_nodrop.png"]
+
diff --git a/ws_main.py b/ws_main.py
index 8b2f99b6..762bb7b2 100755
--- a/ws_main.py
+++ b/ws_main.py
@@ -909,6 +909,9 @@ def build(bld):
source='trex_stateless.asciidoc waf.css', target='trex_stateless.html',scan=ascii_doc_scan);
bld(rule=convert_to_html_toc_book,
+ source='trex_stateless_bench.asciidoc waf.css', target='trex_stateless_bench.html',scan=ascii_doc_scan);
+
+ bld(rule=convert_to_html_toc_book,
source='trex_book.asciidoc waf.css', target='trex_manual.html',scan=ascii_doc_scan);
bld(rule=convert_to_html_toc_book,