diff options
author | 2016-10-11 06:28:37 +0300 | |
---|---|---|
committer | 2016-10-13 19:39:52 +0300 | |
commit | 2441faec09013a9b222a9b1c5d3e4f858e15817b (patch) | |
tree | a982c0b356c8b949248aac6cf6616e15ef12b1ba | |
parent | 46531ad0637c3585a9b55569762ef8a84d9fc5b0 (diff) |
stl 40G bench
-rwxr-xr-x | images/128_nodrop.png | bin | 0 -> 40822 bytes | |||
-rwxr-xr-x | images/128_util.png | bin | 0 -> 40877 bytes | |||
-rwxr-xr-x | images/1514_nodrop.png | bin | 0 -> 44913 bytes | |||
-rwxr-xr-x | images/1514_util.png | bin | 0 -> 40567 bytes | |||
-rwxr-xr-x | images/590_nodrop.png | bin | 0 -> 41542 bytes | |||
-rwxr-xr-x | images/590_util.png | bin | 0 -> 40506 bytes | |||
-rwxr-xr-x | images/64_nodrop.png | bin | 0 -> 40877 bytes | |||
-rwxr-xr-x | images/64_util.png | bin | 0 -> 41139 bytes | |||
-rwxr-xr-x | images/icons/callouts/1.png | bin | 329 -> 183 bytes | |||
-rwxr-xr-x | images/icons/callouts/10.png | bin | 361 -> 229 bytes | |||
-rwxr-xr-x | images/icons/callouts/11.png | bin | 565 -> 223 bytes | |||
-rwxr-xr-x | images/icons/callouts/12.png | bin | 617 -> 237 bytes | |||
-rwxr-xr-x | images/icons/callouts/13.png | bin | 623 -> 238 bytes | |||
-rwxr-xr-x | images/icons/callouts/14.png | bin | 411 -> 245 bytes | |||
-rwxr-xr-x | images/icons/callouts/15.png | bin | 640 -> 251 bytes | |||
-rwxr-xr-x | images/icons/callouts/2.png | bin | 353 -> 209 bytes | |||
-rwxr-xr-x | images/icons/callouts/3.png | bin | 350 -> 211 bytes | |||
-rwxr-xr-x | images/icons/callouts/4.png | bin | 345 -> 204 bytes | |||
-rwxr-xr-x | images/icons/callouts/5.png | bin | 348 -> 206 bytes | |||
-rwxr-xr-x | images/icons/callouts/6.png | bin | 355 -> 219 bytes | |||
-rwxr-xr-x | images/icons/callouts/7.png | bin | 344 -> 199 bytes | |||
-rwxr-xr-x | images/icons/callouts/8.png | bin | 357 -> 219 bytes | |||
-rwxr-xr-x | images/icons/callouts/9.png | bin | 357 -> 228 bytes | |||
-rwxr-xr-x | trex_stateless.asciidoc | 6 | ||||
-rwxr-xr-x | trex_stateless_bench.asciidoc | 149 | ||||
-rwxr-xr-x | ws_main.py | 3 |
26 files changed, 157 insertions, 1 deletions
diff --git a/images/128_nodrop.png b/images/128_nodrop.png Binary files differnew file mode 100755 index 00000000..e2a4c59a --- /dev/null +++ b/images/128_nodrop.png diff --git a/images/128_util.png b/images/128_util.png Binary files differnew file mode 100755 index 00000000..7dd7627e --- /dev/null +++ b/images/128_util.png diff --git a/images/1514_nodrop.png b/images/1514_nodrop.png Binary files differnew file mode 100755 index 00000000..34902725 --- /dev/null +++ b/images/1514_nodrop.png diff --git a/images/1514_util.png b/images/1514_util.png Binary files differnew file mode 100755 index 00000000..7ad7d4da --- /dev/null +++ b/images/1514_util.png diff --git a/images/590_nodrop.png b/images/590_nodrop.png Binary files differnew file mode 100755 index 00000000..569bb9e7 --- /dev/null +++ b/images/590_nodrop.png diff --git a/images/590_util.png b/images/590_util.png Binary files differnew file mode 100755 index 00000000..892caf0b --- /dev/null +++ b/images/590_util.png diff --git a/images/64_nodrop.png b/images/64_nodrop.png Binary files differnew file mode 100755 index 00000000..7dd7627e --- /dev/null +++ b/images/64_nodrop.png diff --git a/images/64_util.png b/images/64_util.png Binary files differnew file mode 100755 index 00000000..d3b6807e --- /dev/null +++ b/images/64_util.png diff --git a/images/icons/callouts/1.png b/images/icons/callouts/1.png Binary files differindex 7d473430..054ea07a 100755 --- a/images/icons/callouts/1.png +++ b/images/icons/callouts/1.png diff --git a/images/icons/callouts/10.png b/images/icons/callouts/10.png Binary files differindex 997bbc82..8833bd59 100755 --- a/images/icons/callouts/10.png +++ b/images/icons/callouts/10.png diff --git a/images/icons/callouts/11.png b/images/icons/callouts/11.png Binary files differindex ce47dac3..d77914d8 100755 --- a/images/icons/callouts/11.png +++ b/images/icons/callouts/11.png diff --git a/images/icons/callouts/12.png b/images/icons/callouts/12.png Binary files differindex 31daf4e2..ac9f8af7 100755 --- a/images/icons/callouts/12.png +++ b/images/icons/callouts/12.png diff --git a/images/icons/callouts/13.png b/images/icons/callouts/13.png Binary files differindex 14021a89..e5e62a1f 100755 --- a/images/icons/callouts/13.png +++ b/images/icons/callouts/13.png diff --git a/images/icons/callouts/14.png b/images/icons/callouts/14.png Binary files differindex 64014b75..f55ef966 100755 --- a/images/icons/callouts/14.png +++ b/images/icons/callouts/14.png diff --git a/images/icons/callouts/15.png b/images/icons/callouts/15.png Binary files differindex 0d65765f..fee9beda 100755 --- a/images/icons/callouts/15.png +++ b/images/icons/callouts/15.png diff --git a/images/icons/callouts/2.png b/images/icons/callouts/2.png Binary files differindex 5d09341b..b05ad9c7 100755 --- a/images/icons/callouts/2.png +++ b/images/icons/callouts/2.png diff --git a/images/icons/callouts/3.png b/images/icons/callouts/3.png Binary files differindex ef7b7004..9ce22b7d 100755 --- a/images/icons/callouts/3.png +++ b/images/icons/callouts/3.png diff --git a/images/icons/callouts/4.png b/images/icons/callouts/4.png Binary files differindex adb8364e..03d55928 100755 --- a/images/icons/callouts/4.png +++ b/images/icons/callouts/4.png diff --git a/images/icons/callouts/5.png b/images/icons/callouts/5.png Binary files differindex 4d7eb460..710b57cc 100755 --- a/images/icons/callouts/5.png +++ b/images/icons/callouts/5.png diff --git a/images/icons/callouts/6.png b/images/icons/callouts/6.png Binary files differindex 0ba694af..65ce9b91 100755 --- a/images/icons/callouts/6.png +++ b/images/icons/callouts/6.png diff --git a/images/icons/callouts/7.png b/images/icons/callouts/7.png Binary files differindex 472e96f8..07bc7f1c 100755 --- a/images/icons/callouts/7.png +++ b/images/icons/callouts/7.png diff --git a/images/icons/callouts/8.png b/images/icons/callouts/8.png Binary files differindex 5e60973c..fc640cab 100755 --- a/images/icons/callouts/8.png +++ b/images/icons/callouts/8.png diff --git a/images/icons/callouts/9.png b/images/icons/callouts/9.png Binary files differindex a0676d26..5bbc0ad9 100755 --- a/images/icons/callouts/9.png +++ b/images/icons/callouts/9.png 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 ↔ Switch port Eth1/50 (vlan 1005) ↔ Switch port Eth1/52 (vlan 1005) ↔ 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↔2, 3↔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"] + @@ -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, |