DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Juraj Linkeš" <juraj.linkes@pantheon.tech>
To: thomas@monjalon.net, david.marchand@redhat.com,
	Honnappa.Nagarahalli@arm.com, ohilyard@iol.unh.edu,
	lijuan.tu@intel.com
Cc: dev@dpdk.org, "Juraj Linkeš" <juraj.linkes@pantheon.tech>
Subject: [RFC PATCH v1 19/24] dts: merge DTS doc/dts_gsg/usr_guide/ixia.rst to DPDK
Date: Wed,  6 Apr 2022 15:11:01 +0000	[thread overview]
Message-ID: <20220406151106.2915304-20-juraj.linkes@pantheon.tech> (raw)
In-Reply-To: <20220406151106.2915304-1-juraj.linkes@pantheon.tech>

---
 dts/doc/dts_gsg/usr_guide/ixia.rst | 248 +++++++++++++++++++++++++++++
 1 file changed, 248 insertions(+)
 create mode 100644 dts/doc/dts_gsg/usr_guide/ixia.rst

diff --git a/dts/doc/dts_gsg/usr_guide/ixia.rst b/dts/doc/dts_gsg/usr_guide/ixia.rst
new file mode 100644
index 0000000000..bd66565211
--- /dev/null
+++ b/dts/doc/dts_gsg/usr_guide/ixia.rst
@@ -0,0 +1,248 @@
+Practice with IxExplorer
+========================
+
+This chapter describes a DTS practice with IXIA IxExplorer, which mainly used for performance testing.
+Here we take the performance case nic_single_core as an example.
+
+Configuring your own execution file
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+First of all, you must configure execution.cfg as below:
+
+.. code-block:: console
+
+   [Execution1]
+   crbs=192.168.1.1
+   drivername=vfio-pci
+   test_suites=
+       nic_single_core_perf,
+   targets=
+       x86_64-native-linuxapp-gcc
+   parameters=nic_type=cfg:perf=true
+   build_type=meson
+   rx_mode=avx512
+
+Configure CRB information
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Then please add the detail information about your CRB in $DTS_CFG_FOLDER/crbs.conf as following:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   dut_ip=192.168.1.1
+   dut_user=root
+   dut_passwd=passwd
+   os=linux
+   dut_arch=
+   tester_ip=192.168.1.1
+   tester_passwd=passwd
+   pktgen_group=IXIA
+   channels=4
+   bypass_core0=True
+   dut_cores=
+
+Configure port information
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ports topology as below:
+
+.. code-block:: console
+
+   IXIA port 0 <---------> DUT port 0
+   IXIA port 1 <---------> DUT port 1
+
+please add port configuration in $DTS_CFG_FOLDER/ports.cfg as following:
+
+.. code-block:: console
+
+   [192.168.1.1]
+   ports =
+       pci=0000:af:00.0,peer=IXIA:3.1;
+       pci=0000:b1:00.0,peer=IXIA:3.2;
+
+Configure pktgen information
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+please configure Pktgen information in $DTS_CFG_FOLDER/pktgen.cfg
+
+.. code-block:: console
+
+   [IXIA]
+   ixia_version=9.00
+   ixia_ip=192.168.2.1
+   ixia_ports=
+       card=3,port=1;
+       card=3,port=2;
+   ixia_force100g=disable
+
+.. note::
+
+    The version of ixia must be consistent with your version of IxExplorer.
+
+
+Configure your own suites
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Performance tests generally have configuration files.
+it's name corresponds to the suite.
+Below is the $DTS_CFG_FOLDER/nic_single_core_perf.cfg configuration file.
+You can set the test parameters according to your test needs.
+
+
+.. code-block:: console
+
+   [suite]
+   update_expected = True
+   test_parameters = {'1C/1T': {64: [512, 2048]},
+                      '1C/2T': {64: [512, 2048]}}
+   rx_desc_16byte = 'y'
+   test_duration = 60
+   accepted_tolerance = 1
+   expected_throughput = {
+        'fortville_spirit': {
+            '1C/1T': {64: {512: 0.00, 2048: 0.00}},
+            '1C/2T': {64: {512: 0.00, 2048: 0.00}}}}
+
+* accepted_tolerance: defines the accepted tolerance between real pps and expected pps.
+* test_parameters: defines the combination of frame size and descriptor numbers,
+  and the pattern is {'frame size': ['descriptor number #1', 'descriptor number #2']}.
+* rx_desc_16byte: 16byte configuration and default by enabled.
+* test_duration: how many seconds each combination performance will be recorded.
+* expected_throughput: it's a dictionary defining expected throughput numbers based on NIC,
+  and the pattern is {'NIC': {'frame size': {'descriptor number': 'excepted throughput'}}}
+  Every user should fill it out with your actual numbers.
+* update_expected: if update_expected==True, and add argument "--update-expected" in bash command,
+  all objects in this file will changed after the run::
+
+   ./dts --update-expected
+
+At the beginning, please change test_parameters according to your requirements,
+then run ./dts --update-expected to get the absolute results which will replace
+the default numbers 0.00 in this configuration.
+So you will have your own private configuration, and could start your tests as usual.
+
+
+Run DTS performance test with IXIA
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Now you can start DTS performance test with IXIA:
+
+.. code-block:: console
+
+    root@test1:~/dts# ./dts
+                  dts:
+    DUT 192.168.1.1
+                        tester: ssh root@192.168.1.1
+                        ...
+    pktgen: ssh root@192.168.1.1
+                        pktgen: tclsh
+                        pktgen: source ./IxiaWish.tcl
+                        pktgen: set ::env(IXIA_VERSION) 9.00
+                        pktgen: package req IxTclHal
+                        pktgen: ixConnectToTclServer 192.168.2.1
+                        pktgen: ixLogin IxiaTclUser
+                        pktgen: ixConnectToChassis 192.168.2.1
+                        pktgen: set chasId [ixGetChassisID 192.168.2.1]
+                        pktgen: ixClearOwnership [list [list 1 3 1] [list 1 3 2]]
+                        pktgen: ixTakeOwnership [list [list 1 3 1] [list 1 3 2]] force
+                        pktgen: stat getLineSpeed 1 3 1
+                        pktgen: stat getLineSpeed 1 3 2
+                        ...
+
+    TestNicSingleCorePerf: Test Case test_perf_nic_single_core Begin
+    TestNicSingleCorePerf: Executing Test Using cores: ['28', '29'] of config 1C/1T
+    TestNicSingleCorePerf: Test running at parameters: framesize: 64, rxd/txd: 512
+    dut.192.168.1.1: x86_64-native-linuxapp-gcc/app/dpdk-testpmd -l 28,29 -n 6 -a 0000:af:00.0 -a 0000:b1:00.0 -- -i --portmask=0x3 --rxq=2 --txq=2 --txd=512 --rxd=512 --nb-cores=1
+    dut.192.168.1.1: start
+                   pktgen: stat getLineSpeed 1 1 1
+                   pktgen: stat getLineSpeed 1 1 2
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: scp -v dumppcap.py root@192.168.1.1:~/
+                   pktgen: scapy -c dumppcap.py 2>/dev/null
+                   pktgen: begin traffic ......
+                   tester: scp -v ixiaConfig.tcl root@192.168.1.1:~/
+                   pktgen: source ixiaConfig.tcl
+                   pktgen: begin get port statistic ...
+                   pktgen: stat getRate statAllStats 1 3 2
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: stat getRate statAllStats 1 3 1
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: stat getRate statAllStats 1 3 2
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: stat getRate statAllStats 1 3 1
+                   pktgen: stat cget -framesReceived
+                   pktgen: stat cget -bitsReceived
+                   pktgen: stat cget -oversize
+                   pktgen: throughput: pps_rx 69504677.000000, bps_rx 35586394625.000000
+                   pktgen: ixStopTransmit portList
+                   pktgen: traffic completed.
+      dut.192.168.1.1: stop
+      dut.192.168.1.1: quit
+      TestNicSingleCorePerf: Trouthput of framesize: 64, rxd/txd: 512 is :69.504677 Mpps
+      ...
+
+         TestNicSingleCorePerf:
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | Fwd_core | Frame Size | TXD/RXD | Throughput  |  Rate   | Expected Throughput | Throughput Difference |
+      +==========+============+=========+=============+=========+=====================+=======================+
+      | 1C/1T    | 64         | 512     | 69.505 Mpps | 93.414% | 0.000 Mpps          | 69.505 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | 1C/1T    | 64         | 2048    | 51.078 Mpps | 68.649% | 0.000 Mpps          | 51.078 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | 1C/2T    | 64         | 512     | 74.404 Mpps | 99.999% | 0.000 Mpps          | 74.404 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+      | 1C/2T    | 64         | 2048    | 67.851 Mpps | 91.192% | 0.000 Mpps          | 67.851 Mpps           |
+      +----------+------------+---------+-------------+---------+---------------------+-----------------------+
+         TestNicSingleCorePerf: Test Case test_perf_nic_single_core Result PASSED:
+
+
+Test result
+~~~~~~~~~~~
+
+After the Test Suite finished the validation, we can find the result files as below in output folder.
+
+.. code-block:: console
+
+   fortville_25g_single_core_perf.json  dts.log  TestNicSingleCorePerf.log test_results.json
+
+The performance case will save the data results in the jison file.
+And the pattern is "nic name + suite name.json".
+Below is the json file of nic_single_core:
+
+.. code-block:: console
+
+      vim fortville_25g_single_core_perf.json
+
+      {"test_perf_nic_single_core": [{
+                "performance": [{"name": "Throughput", "value": 69.505, "unit": "Mpps", "delta": 69.505}],
+                "parameters":  [{"name": "Txd/Rxd", "value": 512, "unit": "descriptor"},
+                               {"name": "frame_size", "value": 64, "unit": "bytes"},
+                               {"name": "Fwd_core", "value": "1C/1T"}], "status": "PASS"},
+                {"performance": [{"name": "Throughput", "value": 51.078, "unit": "Mpps", "delta": 51.078}],
+                 "parameters": [{"name": "Txd/Rxd", "value": 2048, "unit": "descriptor"},
+                                {"name": "frame_size", "value": 64, "unit": "bytes"},
+                                {"name": "Fwd_core", "value": "1C/1T"}], "status": "PASS"},
+               {"performance": [{"name": "Throughput", "value": 74.404, "unit": "Mpps", "delta": 74.404}],
+                "parameters": [{"name": "Txd/Rxd", "value": 512, "unit": "descriptor"},
+                                {"name": "frame_size", "value": 64, "unit": "bytes"},
+                                {"name": "Fwd_core", "value": "1C/2T"}], "status": "PASS"},
+               {"performance": [{"name": "Throughput", "value": 67.851, "unit": "Mpps", "delta": 67.851}],
+                "parameters": [{"name": "Txd/Rxd", "value": 2048, "unit": "descriptor"},
+                               {"name": "frame_size", "value": 64, "unit": "bytes"},
+                               {"name": "Fwd_core", "value": "1C/2T"}], "status": "PASS"}]}
+
+
+You can set your own expectations in con/suite.cfg based on the json data.
+If the actual data differs too much from the expected data, the case fails.
-- 
2.20.1


  parent reply	other threads:[~2022-04-06 15:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-06 15:10 [RFC PATCH v1 00/24] merge DTS documentation files " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 01/24] dts: merge DTS CONTRIBUTING.TXT " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 02/24] dts: merge DTS doc/dts_gsg/Makefile " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 03/24] dts: merge DTS doc/dts_gsg/conf.py " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 04/24] dts: merge DTS doc/dts_gsg/image/dts_network_arch.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 05/24] dts: merge DTS doc/dts_gsg/image/dts_result.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 06/24] dts: merge DTS doc/dts_gsg/image/dts_soft_arch.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 07/24] dts: merge DTS doc/dts_gsg/image/scene_pf_passthrough.svg " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 08/24] dts: merge DTS doc/dts_gsg/image/virt_flow.svg " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 09/24] dts: merge DTS doc/dts_gsg/index.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 10/24] dts: merge DTS doc/dts_gsg/quick_start.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 11/24] dts: merge DTS doc/dts_gsg/rel_notes/index.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 12/24] dts: merge DTS doc/dts_gsg/rel_notes/release_21_11.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 13/24] dts: merge DTS doc/dts_gsg/usr_guide/asan_test.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 14/24] dts: merge DTS doc/dts_gsg/usr_guide/igb_uio.rst " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 15/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_func_deploy.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 16/24] dts: merge DTS doc/dts_gsg/usr_guide/image/dts_result.png " Juraj Linkeš
2022-04-06 15:10 ` [RFC PATCH v1 17/24] dts: merge DTS doc/dts_gsg/usr_guide/index.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 18/24] dts: merge DTS doc/dts_gsg/usr_guide/intro.rst " Juraj Linkeš
2022-04-06 15:11 ` Juraj Linkeš [this message]
2022-04-06 15:11 ` [RFC PATCH v1 20/24] dts: merge DTS doc/dts_gsg/usr_guide/results.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 21/24] dts: merge DTS doc/dts_gsg/usr_guide/setup_dut.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 22/24] dts: merge DTS doc/dts_gsg/usr_guide/sys_reqs.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 23/24] dts: merge DTS doc/dts_gsg/usr_guide/trex.rst " Juraj Linkeš
2022-04-06 15:11 ` [RFC PATCH v1 24/24] dts: merge DTS doc/dts_gsg/usr_guide/usage.rst " Juraj Linkeš

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220406151106.2915304-20-juraj.linkes@pantheon.tech \
    --to=juraj.linkes@pantheon.tech \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=lijuan.tu@intel.com \
    --cc=ohilyard@iol.unh.edu \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).