From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 76638A0471 for ; Fri, 16 Aug 2019 07:17:49 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 62E0F1BEBF; Fri, 16 Aug 2019 07:17:49 +0200 (CEST) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 85F6D1B13C for ; Fri, 16 Aug 2019 07:17:46 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Aug 2019 22:17:45 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,391,1559545200"; d="scan'208";a="194916818" Received: from unknown (HELO dpdk-wenjielx-dtspatch135.sh.intel.com) ([10.240.176.135]) by fmsmga001.fm.intel.com with ESMTP; 15 Aug 2019 22:17:44 -0700 From: Peng Yuan To: dts@dpdk.org Cc: Peng Yuan Date: Fri, 16 Aug 2019 13:22:20 +0800 Message-Id: <1565932940-109746-1-git-send-email-yuan.peng@intel.com> X-Mailer: git-send-email 1.9.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [dts] [PATCH v2]test_plans: add qos_sched_test_plan.rst 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: , Errors-To: dts-bounces@dpdk.org Sender: "dts" Add qos_sched_test_plan.rst Signed-off-by: Peng Yuan diff --git a/test_plans/qos_sched_test_plan.rst b/test_plans/qos_sched_test_plan.rst index ea781bd..b8bc966 100644 --- a/test_plans/qos_sched_test_plan.rst +++ b/test_plans/qos_sched_test_plan.rst @@ -67,22 +67,16 @@ https://doc.dpdk.org/guides/sample_app_ug/qos_scheduler.html Prerequisites ============= -The DUT must have four 10G Ethernet ports connected to four ports on -Tester that are controlled by the Scapy packet generator:: +The DUT must have four 10G Ethernet ports connected to two ports on +Tester that are controlled by packet generator:: dut_port_0 <---> tester_port_0 dut_port_1 <---> tester_port_1 - dut_port_2 <---> tester_port_2 - dut_port_3 <---> tester_port_3 -Or use IXIA as packet generator. - -Assume four DUT 10G Ethernet ports' pci device id is as the following:: +Assume two DUT 10G Ethernet ports' pci device id is as the following:: dut_port_0 : "0000:05:00.0" dut_port_1 : "0000:05:00.1" - dut_port_2 : "0000:05:00.2" - dut_port_3 : "0000:05:00.3" 1. Compile DPDK and sample with defining:: @@ -90,34 +84,504 @@ Assume four DUT 10G Ethernet ports' pci device id is as the following:: 2. Bind four ports to dpdk igb_uio driver:: - ./usertools/dpdk-devbind.py -b igb_uio 05:00.0 05:00.1 05:00:2 05:00.3 + ./usertools/dpdk-devbind.py -b igb_uio 05:00.0 05:00.1 -Test Case: single packet flow -============================= +Test Case: 1 pipe, 8 TCs +======================== 1. This example uses a single packet flow configuration - which creates one RX thread on lcore 5 reading from port 3 - and a worker thread on lcore 7 writing to port 2:: - - ./qos_sched -l 1,5,7 -n 4 -- --pfc "3,2,5,7" --cfg ../profile.cfg - -2. Set flows with different vlan ID, which represent different pipes. - Each Rx flow is shaping to 1/4096 of Tx flow. - Set flows with different Destination IP address (0.0.X.0), - such as 100.0.1.0-100.0.4.0, which represent different tc. - Check the Rx/Tx Bps too. - -Test Case: two packet flows + which creates one RX thread on lcore 5 reading from port 0 + and a worker thread on lcore 7 writing to port 1:: + + ./qos_sched -l 1,5,7 -n 4 -- -i --pfc "0,1,5,7" --cfg ../profile.cfg + +2. The traffic manage setting is configured in profile.cfg. + Set flows with QinQ inner vlan ID=0, which represents pipe 0. + Set IP dst address from 10.0.0.0~10.0.0.7, which enter queue0~queue7, + mapping TC0~TC7. + Frame size=70bytes. + Send rate is 100% linerate. + The pipe’s rate is limited to 1/4096 linerate. + So priority guarantees tc0 rate, while tc1 has few packet forwarded. + All of the packets of tc2~tc7 are dropped:: + + qos_sched> stats port 1 subport 0 pipe 0 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 6934 | 2388410 | 457644 | 157635060 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 34 | 2395345 | 2244 | 158092770 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 0 | 2396210 | 0 | 158149860 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 0 | 3613033 | 0 | 238460178 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 0 | 2381392 | 0 | 157171872 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 0 | 2381377 | 0 | 157170882 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 0 | 2381925 | 0 | 157207050 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 0 | 2382177 | 0 | 157223682 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + +3. The traffic manage setting is configured in profile.cfg. + Change pipe profile 0, set tb rate and tc rate to 3051750=1/409.6=0.244% port rate + Set IP dst address from 10.0.0.0~10.0.0.7, which enter queue0~queue7, + mapping TC0~TC7. + Send rate is 1% linerate. + Each TC send rate has 0.125% linerate. + So TC0 packets can be all forwarded, no drop. + TC1 packets can be forwarded, while there is about 4.5% packets dropped. + Other TCs’ packets are dropped:: + + qos_sched> stats port 1 subport 0 pipe 0 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 150824 | 0 | 9954384 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 144700 | 6124 | 9550200 | 404184 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 0 | 150824 | 0 | 9954384 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 0 | 150824 | 0 | 9954384 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 0 | 150824 | 0 | 9954384 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 0 | 150824 | 0 | 9954384 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 0 | 150824 | 0 | 9954384 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 0 | 150824 | 0 | 9954384 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + +Test Case: 4 pipe, 4 TCs +======================== +1. This example uses a single transmission configuration + which creates one RX thread on lcore 5 reading from port 0 + and a worker thread on lcore 7 writing to port 1:: + + ./qos_sched -l 1,5,7 -n 4 -- -i --pfc "0,1,5,7" --cfg ../profile.cfg + +2. The traffic manage setting is configured in profile.cfg. + Set three flows with QinQ inner vlan ID=0/1/2/3, which represents pipe 0/1/2/3. + Set IP dst address 10.0.0.0 of pipe 0. + Set IP dst address 10.0.0.1 of pipe 1. + Set IP dst address 10.0.0.2 of pipe 2. + Set IP dst address 10.0.0.3 of pipe 3. + Frame size=70bytes. + Send rate is 100% linerate. + The RX rate of port 1 is limited to 4/4096 linerate. + You can see each pipe is limited to 1/4096 linerate. + only one TC has packets forwarded in each pipe:: + + qos_sched> stats port 1 subport 0 pipe 0 + qos_sched> stats port 1 subport 0 pipe 1 + qos_sched> stats port 1 subport 0 pipe 2 + qos_sched> stats port 1 subport 0 pipe 3 + +Test Case: 1 pipe, 12 TCs +========================= +1. This example uses a single transmission configuration + which creates one RX thread on lcore 5 reading from port 0 + and a worker thread on lcore 7 writing to port 1:: + + ./qos_sched -l 1,5,7 -n 4 -- -i --pfc "0,1,5,7" --cfg ../profile.cfg + +2. The traffic manage setting is configured in profile.cfg. + change pipe profile 0, set tb rate and tc rate to 1/40.96 port rate:: + + tb rate = 30517500 + tc 0 rate = 30517500 + ...... + tc 12 rate = 30517500 + + Set one flow with QinQ inner vlan ID=0, which represents pipe 0. + Set IP dst address 10.0.0.0~10.0.0.15, which enter queue0~queue15, + mapping TC0~TC12. + Frame size=70bytes. + Send rate is 1% linerate. + Each TC send rate has 0.0625% linerate. + The pipe rate and each tc rate in configuration file is limited to 1/40.96 =2.44%linerate. + So all the packets of different TCs can be forwarded without drop. + You can check the pipe stats:: + + qos_sched> stats port 1 subport 0 pipe 0 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 14995 | 0 | 989670 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 14995 | 0 | 989670 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 8 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 9 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 10 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 11 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 0 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 1 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 2 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 3 | 14996 | 0 | 989736 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + +Test Case: 1 pipe, set a TC rate to 0 +===================================== +1. This example uses a single transmission configuration + which creates one RX thread on lcore 5 reading from port 0 + and a worker thread on lcore 7 writing to port 1:: + + ./qos_sched -l 1,5,7 -n 4 -- -i --pfc "0,1,5,7" --cfg ../profile.cfg + +2. The traffic manage setting is configured in profile.cfg. + change pipe profile 0, set tb rate and tc rate to 1/40.96 port rate:: + + tb rate = 30517500 + tc 0 rate = 30517500 + ...... + tc 12 rate = 30517500 + + And set TC0 rate to 0 of subport and pipe configuration:: + + queue sizes = 64 0 64 64 64 64 64 64 64 64 64 64 64 + tc 1 rate = 0 + + Set one flow with QinQ inner vlan ID=0, which represents pipe 0. + Set IP dst address 10.0.0.0~10.0.0.3, which should enter queue0~queue3, + mapping TC0~TC3. + Frame size=70bytes. + Send rate is 1% linerate. + Each TC send rate has 0.25% linerate. + The pipe rate and each tc rate in configuration file is limited to 1/40.96 =2.44%linerate. + So all the packets of different TCs can be forwarded without drop. + You can check the pipe stats, there is no packets received by TC1:: + + qos_sched> stats port 1 subport 0 pipe 0 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 30572 | 0 | 2017752 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 30572 | 0 | 2017752 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 30571 | 0 | 2017686 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 30572 | 0 | 2017752 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + +Test Case: best effort TC12 =========================== -1. This example with two packet flow configurations using different ports +1. This example uses a single transmission configuration + which creates one RX thread on lcore 5 reading from port 0 + and a worker thread on lcore 7 writing to port 1:: + + ./qos_sched -l 1,5,7 -n 4 -- -i --pfc "0,1,5,7" --cfg ../profile.cfg + +2. The traffic manage setting is configured in profile.cfg. + Set flows with QinQ inner vlan ID=0, which represents pipe 0. + Set IP dst address from 10.0.0.12~10.0.0.4, which enter queue12~queue14, + mapping TC12. + Frame size=70bytes. + Send rate is 100% linerate. + The pipe’s rate is limited to 1/4096 linerate. + You can check the pipe stats:: + + qos_sched> stats port 1 subport 0 pipe 0 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 8 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 9 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 10 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 11 | 0 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 0 | 2475 | 9709255 | 163350 | 640810830 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 1 | 2475 | 9708965 | 163350 | 640791690 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 2 | 2475 | 9709249 | 163350 | 640810434 | 64 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 3 | 0 | 0 | 0 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + + Each queue received same quantity of packets. + It is different from other TCs. + Because four queues of TC12 have the same priority, and the wrr weights = 1 1 1 1. + +Test Case: 4096 pipes, 12 TCs +============================= +1. This example uses a single transmission configuration + which creates one RX thread on lcore 5 reading from port 0 + and a worker thread on lcore 7 writing to port 1:: + + ./qos_sched -l 1,5,7 -n 4 -- -i --pfc "0,1,5,7" --cfg ../profile.cfg + +2. The traffic manage setting is configured in profile.cfg. + Set flows with QinQ inner vlan ID=random, which represents pipe 0-4095. + Set IP dst address from 10.0.0.0~10.0.0.15, which enter queue0~queue15, + mapping TC0~TC12. + Frame size=70bytes. + Send rate is 100% linerate, which is 13.89Mpps. + Each pipe’s rate is limited to 1/4096 linerate. + Received rate from port 1 is 11.67Mpps. + TC0~11 rate are priority guaranteed. + TC12 has packets dropped. + You can check the pipe0~pipe4095 stats:: + + qos_sched> stats port 1 subport 0 pipe 0 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 1510 | 8 | 99660 | 528 | 19 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 1429 | 0 | 94314 | 0 | 22 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 1518 | 5 | 100188 | 330 | 36 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 1525 | 0 | 100650 | 0 | 23 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 1512 | 0 | 99792 | 0 | 31 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 1480 | 0 | 97680 | 0 | 21 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 1505 | 6 | 99330 | 396 | 22 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 1574 | 10 | 103884 | 660 | 24 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 8 | 0 | 1477 | 0 | 97482 | 0 | 25 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 9 | 0 | 1421 | 0 | 93786 | 0 | 24 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 10 | 0 | 1486 | 8 | 98076 | 528 | 22 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 11 | 0 | 1466 | 0 | 96756 | 0 | 27 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 0 | 1008 | 504 | 66528 | 33264 | 59 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 1 | 1006 | 454 | 66396 | 29964 | 57 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 2 | 1002 | 458 | 66132 | 30228 | 54 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 3 | 1005 | 413 | 66330 | 27258 | 57 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + + qos_sched> stats port 1 subport 0 pipe 1 + ...... + qos_sched> stats port 1 subport 0 pipe 4095 + + There is a few packets dropped in TC0~TC11. + This is the limitation of the implementation due to approximation we apply + at some places in the code for performance reasons. + The strict priority of the traffic classes has some 1-5% inaccuracy. + +3. If TX core defined:: + + ./qos_sched -l 1,2,6,7 -n 4 -- -i --pfc "0,1,2,6,7" --cfg ../profile.cfg + + The received rate can reach linerate, which is 13.89Mpps, no packets are dropped:: + + qos_sched> stats port 1 subport 0 pipe 0 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 7065 | 0 | 466290 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 6946 | 0 | 458436 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 7028 | 0 | 463848 | 0 | 1 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 7158 | 0 | 472428 | 0 | 1 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 7071 | 0 | 466686 | 0 | 1 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 7051 | 0 | 465366 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 7236 | 0 | 477576 | 0 | 4 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 7109 | 0 | 469194 | 0 | 5 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 8 | 0 | 7055 | 0 | 465630 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 9 | 0 | 7145 | 0 | 471570 | 0 | 3 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 10 | 0 | 7008 | 0 | 462528 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 11 | 0 | 7218 | 0 | 476388 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 0 | 7064 | 0 | 466224 | 0 | 1 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 1 | 7113 | 0 | 469458 | 0 | 4 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 2 | 7100 | 0 | 468600 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 3 | 6992 | 0 | 461472 | 0 | 0 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + +Test Case: qos_sched of two ports +================================= +1. This example with two packet flows configuration using different ports but sharing the same core for QoS scheduler is given below:: - ./qos_sched -l 1,2,6,7 -n 4 -- --pfc "3,2,2,6,7" --pfc "1,0,2,6,7" --cfg ../profile.cfg - -2. Set flows to port 3 and port 1 with different vlan ID. - Each Rx flow is shaping to 1/4096 of Tx flow. - Set flows with different Destination IP address (0.0.X.0), - such as 100.0.1.0-100.0.4.0, which represent different tc. - Check the Rx/Tx Bps too. + ./qos_sched -l 1,2,6,7 -n 4 -- --pfc "0,1,2,6,7" --pfc "1,0,2,6,7" --cfg ../profile.cfg + +2. The traffic manage setting is configured in profile.cfg. + Set flows with QinQ inner vlan ID=random, which represents pipe 0-4095. + Set IP dst address from 10.0.0.0~10.0.0.15, which enter queue0~queue15, + mapping TC0~TC12. + Frame size=70bytes. + Send rate is 100% linerate, which is 13.89Mpps. + Received rate from port 0 and port 1 are both 8.10Mpps. + No packets are dropped on two ports. + You can check the pipe0~pipe4095 of port0 and port1 stats:: + + qos_sched> stats port 0 subport 0 pipe 4095 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 6582 | 0 | 434316 | 0 | 7 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 6634 | 0 | 437706 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 6587 | 0 | 434596 | 0 | 6 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 6581 | 0 | 434242 | 0 | 7 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 6479 | 0 | 427518 | 0 | 9 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 6669 | 0 | 440018 | 0 | 9 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 6533 | 0 | 431048 | 0 | 10 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 6531 | 0 | 430894 | 0 | 5 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 8 | 0 | 6455 | 0 | 425902 | 0 | 6 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 9 | 0 | 6636 | 0 | 437836 | 0 | 7 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 10 | 0 | 6720 | 0 | 443382 | 0 | 2 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 11 | 0 | 6674 | 0 | 440354 | 0 | 9 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 0 | 6658 | 0 | 439256 | 0 | 8 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 1 | 6585 | 0 | 434470 | 0 | 7 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 2 | 6489 | 0 | 428112 | 0 | 4 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 3 | 6562 | 0 | 432984 | 0 | 8 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + + qos_sched> stats port 1 subport 0 pipe 4 + + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | TC | Queue | Pkts OK |Pkts Dropped | Bytes OK |Bytes Dropped| Length | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 0 | 0 | 282 | 0 | 18612 | 0 | 16 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 1 | 0 | 259 | 0 | 17094 | 0 | 15 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 2 | 0 | 282 | 0 | 18612 | 0 | 13 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 3 | 0 | 256 | 0 | 16896 | 0 | 11 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 4 | 0 | 258 | 0 | 17028 | 0 | 18 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 5 | 0 | 285 | 0 | 18810 | 0 | 18 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 6 | 0 | 257 | 0 | 16962 | 0 | 15 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 7 | 0 | 295 | 0 | 19470 | 0 | 17 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 8 | 0 | 263 | 0 | 17358 | 0 | 8 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 9 | 0 | 305 | 0 | 20130 | 0 | 18 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 10 | 0 | 274 | 0 | 18084 | 0 | 13 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 11 | 0 | 279 | 0 | 18414 | 0 | 15 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 0 | 243 | 0 | 16038 | 0 | 14 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 1 | 302 | 0 | 19932 | 0 | 19 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 2 | 252 | 0 | 16632 | 0 | 12 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + | 12 | 3 | 274 | 0 | 18084 | 0 | 15 | + +----+-------+-------------+-------------+-------------+-------------+-------------+ + + RX port 1: rx: 8101753 err: 0 no_mbuf: 59022464 + TX port 0: tx: 8101744 err: 0 + -------+------------+------------+ + | received | dropped | + -------+------------+------------+ + RX | 8101684 | 0 | + QOS+TX | 8101696 | 5 | pps: 8101691 + -------+------------+------------+ + + RX port 0: rx: 8100867 err: 0 no_mbuf: 59005408 + TX port 1: tx: 8100870 err: 0 + -------+------------+------------+ + | received | dropped | + -------+------------+------------+ + RX | 8100755 | 0 | + QOS+TX | 8100772 | 39 | pps: 8100733 + -------+------------+------------+ + + It might be the case that packets are dropped due to less space in mempool. + In this experiment, we are stressing the system with more packets + to see how much scheduler can process. Note that independent cores for the packet flow configurations for each of the RX, WT and TX thread are also supported, -- 2.7.4