stl 40G bench
authorYaroslav Brustinov <[email protected]>
Tue, 11 Oct 2016 03:28:37 +0000 (06:28 +0300)
committerHanoh Haim <[email protected]>
Thu, 13 Oct 2016 16:39:52 +0000 (19:39 +0300)
26 files changed:
images/128_nodrop.png [new file with mode: 0755]
images/128_util.png [new file with mode: 0755]
images/1514_nodrop.png [new file with mode: 0755]
images/1514_util.png [new file with mode: 0755]
images/590_nodrop.png [new file with mode: 0755]
images/590_util.png [new file with mode: 0755]
images/64_nodrop.png [new file with mode: 0755]
images/64_util.png [new file with mode: 0755]
images/icons/callouts/1.png
images/icons/callouts/10.png
images/icons/callouts/11.png
images/icons/callouts/12.png
images/icons/callouts/13.png
images/icons/callouts/14.png
images/icons/callouts/15.png
images/icons/callouts/2.png
images/icons/callouts/3.png
images/icons/callouts/4.png
images/icons/callouts/5.png
images/icons/callouts/6.png
images/icons/callouts/7.png
images/icons/callouts/8.png
images/icons/callouts/9.png
trex_stateless.asciidoc
trex_stateless_bench.asciidoc [new file with mode: 0755]
ws_main.py

diff --git a/images/128_nodrop.png b/images/128_nodrop.png
new file mode 100755 (executable)
index 0000000..e2a4c59
Binary files /dev/null and b/images/128_nodrop.png differ
diff --git a/images/128_util.png b/images/128_util.png
new file mode 100755 (executable)
index 0000000..7dd7627
Binary files /dev/null and b/images/128_util.png differ
diff --git a/images/1514_nodrop.png b/images/1514_nodrop.png
new file mode 100755 (executable)
index 0000000..3490272
Binary files /dev/null and b/images/1514_nodrop.png differ
diff --git a/images/1514_util.png b/images/1514_util.png
new file mode 100755 (executable)
index 0000000..7ad7d4d
Binary files /dev/null and b/images/1514_util.png differ
diff --git a/images/590_nodrop.png b/images/590_nodrop.png
new file mode 100755 (executable)
index 0000000..569bb9e
Binary files /dev/null and b/images/590_nodrop.png differ
diff --git a/images/590_util.png b/images/590_util.png
new file mode 100755 (executable)
index 0000000..892caf0
Binary files /dev/null and b/images/590_util.png differ
diff --git a/images/64_nodrop.png b/images/64_nodrop.png
new file mode 100755 (executable)
index 0000000..7dd7627
Binary files /dev/null and b/images/64_nodrop.png differ
diff --git a/images/64_util.png b/images/64_util.png
new file mode 100755 (executable)
index 0000000..d3b6807
Binary files /dev/null and b/images/64_util.png differ
index 7d47343..054ea07 100755 (executable)
Binary files a/images/icons/callouts/1.png and b/images/icons/callouts/1.png differ
index 997bbc8..8833bd5 100755 (executable)
Binary files a/images/icons/callouts/10.png and b/images/icons/callouts/10.png differ
index ce47dac..d77914d 100755 (executable)
Binary files a/images/icons/callouts/11.png and b/images/icons/callouts/11.png differ
index 31daf4e..ac9f8af 100755 (executable)
Binary files a/images/icons/callouts/12.png and b/images/icons/callouts/12.png differ
index 14021a8..e5e62a1 100755 (executable)
Binary files a/images/icons/callouts/13.png and b/images/icons/callouts/13.png differ
index 64014b7..f55ef96 100755 (executable)
Binary files a/images/icons/callouts/14.png and b/images/icons/callouts/14.png differ
index 0d65765..fee9bed 100755 (executable)
Binary files a/images/icons/callouts/15.png and b/images/icons/callouts/15.png differ
index 5d09341..b05ad9c 100755 (executable)
Binary files a/images/icons/callouts/2.png and b/images/icons/callouts/2.png differ
index ef7b700..9ce22b7 100755 (executable)
Binary files a/images/icons/callouts/3.png and b/images/icons/callouts/3.png differ
index adb8364..03d5592 100755 (executable)
Binary files a/images/icons/callouts/4.png and b/images/icons/callouts/4.png differ
index 4d7eb46..710b57c 100755 (executable)
Binary files a/images/icons/callouts/5.png and b/images/icons/callouts/5.png differ
index 0ba694a..65ce9b9 100755 (executable)
Binary files a/images/icons/callouts/6.png and b/images/icons/callouts/6.png differ
index 472e96f..07bc7f1 100755 (executable)
Binary files a/images/icons/callouts/7.png and b/images/icons/callouts/7.png differ
index 5e60973..fc640ca 100755 (executable)
Binary files a/images/icons/callouts/8.png and b/images/icons/callouts/8.png differ
index a0676d2..5bbc0ad 100755 (executable)
Binary files a/images/icons/callouts/9.png and b/images/icons/callouts/9.png differ
index 0b6ad8f..f3ae85b 100755 (executable)
@@ -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 (executable)
index 0000000..0ddcb35
--- /dev/null
@@ -0,0 +1,149 @@
+TRex Stateless support
+======================
+:email: [email protected] 
+: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"]
+
index 8b2f99b..762bb7b 100755 (executable)
@@ -908,6 +908,9 @@ def build(bld):
     bld(rule=convert_to_html_toc_book,
         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);