From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 52846C1EE for ; Wed, 6 Jun 2018 07:37:03 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Jun 2018 22:37:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,482,1520924400"; d="scan'208";a="64683845" Received: from shecgisg006.sh.intel.com ([10.239.39.68]) by orsmga002.jf.intel.com with ESMTP; 05 Jun 2018 22:37:01 -0700 Received: from shecgisg006.sh.intel.com (localhost [127.0.0.1]) by shecgisg006.sh.intel.com with ESMTP id w565b0Bw025509; Wed, 6 Jun 2018 13:37:00 +0800 Received: (from yufengmx@localhost) by shecgisg006.sh.intel.com with œ id w565b0qG025505; Wed, 6 Jun 2018 13:37:00 +0800 From: yufengx.mo@intel.com To: dts@dpdk.org Cc: yufengmx Date: Wed, 6 Jun 2018 13:36:57 +0800 Message-Id: <1528263420-25329-2-git-send-email-yufengx.mo@intel.com> X-Mailer: git-send-email 1.7.0.7 In-Reply-To: <1528263420-25329-1-git-send-email-yufengx.mo@intel.com> References: <1528263420-25329-1-git-send-email-yufengx.mo@intel.com> Subject: [dts] [PATCH V1 1/3] metrics: upload test plan X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jun 2018 05:37:03 -0000 From: yufengmx This test plan is for flow classify feature. metrics is the tool to call metrics lib for group of packets, just after receiving them or before transmitting them. Signed-off-by: yufengmx --- test_plans/metrics_test_plan.rst | 226 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 test_plans/metrics_test_plan.rst diff --git a/test_plans/metrics_test_plan.rst b/test_plans/metrics_test_plan.rst new file mode 100644 index 0000000..b4b811f --- /dev/null +++ b/test_plans/metrics_test_plan.rst @@ -0,0 +1,226 @@ +.. Copyright (c) 2010-2018 Intel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Intel Corporation nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + OF THE POSSIBILITY OF SUCH DAMAGE. + +metrics +======= + +The Metrics implements a mechanism by which *producers* can publish numeric +information for later querying by *consumers*. Here dpdk-procinfo process is the +*consumers*. ``latency stats`` and ``bit rate`` are the two implements based +on metrics lib. + +The dpdk-procinfo process use new command line option "--metrics" to display +metrics statistics. + +Functionality: + +* The library will register ethdev Rx/Tx callbacks for each active port, + queue combinations. +* The library will register latency stats names with new metrics library. +* Rx packets will be marked with time stamp on each sampling interval. +* On Tx side, packets with time stamp will be considered for calculating + the minimum, maximum, average latencies and also jitter. +* Average latency is calculated using exponential weighted moving average + method. +* Minimum and maximum latencies will be low and high latency values + observed so far. +* Jitter calculation is done based on inter packet delay variation. + +note: DPDK technical document refer to ``doc/guides/prog_guide/metrics_lib.rst`` + +latency stats +============= + +Latency stats measures minimum, average and maximum latencies, and jitter in +nano seconds. + +bit rate +======== + +Calculates peak and average bit-rate statistics. + +Prerequisites +============= +*. Hardware: + - CPU: Haswell, IVB(CrownPass) + +*. OS and Kernel: + - Fedora 20/22 + - Enable Kernel features Huge page, UIO, IOMMU + - Enable Intel IOMMU in kernel commnand + +*. NIC: + 2x Intel® 82599 (Niantic) NICs (2x 10GbE full duplex optical ports per NIC) + plugged into the available PCIe Gen2 8-lane slots in two different + configurations: + *. card0 and card1 attached to socket0. + +*. IXIA Traffic Generator Configuration + +Test content +============ + +latency stats +------------- + +The idea behind the testing process is to send different frames number of +different packets from ixia traffic generator to the DUT while these are being +forwarded back by the app and measure some of statistics. These data are queried +by the dpdk-proc app. + +- min_latencyy_ns + + - Minimum latency in nano seconds + +- max_latencyy_ns + + - Maximum latency in nano seconds + +- avg_latencyy_ns + + - Average latency in nano seconds + +- jittery_ns + + - Latency variation + +bit rate +-------- + +The idea behind the testing process is to send different frames number of +different packets from ixia traffic generator to the DUT while these are being +forwarded back by the app and measure some of statistics. These data are queried +by the dpdk-proc app. + +- mean_bits_in + + - Average rx bits rate + +- mean_bits_out + + - Average tx bits rate + +- peak_bits_in + + - peak rx bits rate + +- peak_bits_out + + - peak tx bits rate + +transmission packets' format +-------------------------- + [Ether()/IP()/UDP()/Raw('\0'*60)] + +transmission Frames size +-------------------------- +Then measure the forwarding throughput for different packet sizes. + +Frame size(64/72/128/256/512/1024) + +Test Case : test latency stats (performance test) +==================================================================== +1. Connect two physical ports to IXIA + +2. bind two ports to igb_uio driver. + + ./tools/dpdk_nic_bind.py --bind=igb_uio 0000:xx:00.0 0000:xx:00.1 + +3. Start testpmd, set it in io mode and enable verbose output + testpmd -c 0x30 -n 4 -- -i --port-topology=chained --txqflags=0xXXXX + testpmd> set fwd io + testpmd> set verbose 1 + testpmd> start + +4. Configure packet flow in IxiaNetwork + +5. Start to send packets from IXIA, set ixia to continuous traffic lasting 10 + minitues + +6. run dpdk-proc to get latency stats data, query data at a average interval and + get 15 times data + dpdk-procinfo -- -p 0x3 --metrics + +7. Compare dpdk statistics data with ixia statistics data. + +Test Case : test bit rate (performance test) +==================================================================== +1. Connect two physical ports to IXIA + +2. bind two ports to igb_uio driver. + + ./tools/dpdk_nic_bind.py --bind=igb_uio 00:08.0 00:08.1 + +3. Start testpmd, set it in io mode and enable verbose output + testpmd -c 0x30 -n 4 -- -i --port-topology=chained --txqflags=0xXXXX + testpmd> set fwd io + testpmd> set verbose 1 + testpmd> start + +4. Configure packet flow in IxiaNetwork + +5. Start to send packets from IXIA, set ixia to continuous traffic lasting 10 + minitues + +6. run dpdk-proc to get latency stats data, query data at a average interval and + get 15 times data + dpdk-procinfo -- -p 0x3 --metrics + +7. Compare dpdk statistics data with ixia statistics data. + +Test Case : test bit rate under loop mode (performance test) +==================================================================== +1. Connect two physical ports to IXIA + +2. bind two ports to igb_uio driver. + + ./tools/dpdk_nic_bind.py --bind=igb_uio 00:08.0 00:08.1 + +3. Start testpmd, set it in io mode and enable verbose output + testpmd -c 0x30 -n 4 -- -i --port-topology=loop --txqflags=0xXXXX + testpmd> set fwd io + testpmd> set verbose 1 + testpmd> start + +4. Configure packet flow in IxiaNetwork + +5. Start to send packets from IXIA, set ixia to continuous traffic lasting 5 + minitues + +6. run dpdk-proc to get latency stats data, query data at a average interval and + get 5 times data + dpdk-procinfo -- -p 0x3 --metrics + +7. decline ixia rate percent from 100%/80%/60%/20%, loop step 5/6. + +8. check dpdk statistics data with ixia statistics data. peak_bits_out/peak_bits_in + will decline with rate percent. \ No newline at end of file -- 1.9.3