* [dpdk-dev] [PATCH 1/3] sched: documentation update @ 2019-10-29 13:19 Jasvinder Singh 2019-10-29 13:19 ` [dpdk-dev] [PATCH 2/3] examples/qos_sched: " Jasvinder Singh ` (5 more replies) 0 siblings, 6 replies; 13+ messages in thread From: Jasvinder Singh @ 2019-10-29 13:19 UTC (permalink / raw) To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic Updates documentation to reflect the changes in the qos scheduler library. Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> --- .../prog_guide/img/sched_hier_per_port.png | Bin 58973 -> 0 bytes .../prog_guide/img/sched_hier_per_port.svg | Bin 0 -> 1463490 bytes doc/guides/prog_guide/qos_framework.rst | 112 ++++++++++++++---- 3 files changed, 90 insertions(+), 22 deletions(-) delete mode 100644 doc/guides/prog_guide/img/sched_hier_per_port.png create mode 100644 doc/guides/prog_guide/img/sched_hier_per_port.svg diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.png b/doc/guides/prog_guide/img/sched_hier_per_port.png deleted file mode 100644 index 462e88aaab4418d8893137659a08ee43f97842d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58973 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 b-2Q;{!goGRpvI5)3GjI@r6gG<ZWQ!CP87o# diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.svg b/doc/guides/prog_guide/img/sched_hier_per_port.svg new file mode 100644 index 0000000000000000000000000000000000000000..d77ee70a2dd06eedc2c10f44621902921a820806 GIT binary patch literal 1463490 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 aKmY;|fB*y_009U<00Izz00f3h;Qs?U4yb1U literal 0 HcmV?d00001 diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst index a7527b21c..476cdd953 100644 --- a/doc/guides/prog_guide/qos_framework.rst +++ b/doc/guides/prog_guide/qos_framework.rst @@ -136,7 +136,7 @@ Each queue hosts packets from one or multiple connections of the same type belon .. _figure_sched_hier_per_port: -.. figure:: img/sched_hier_per_port.* +.. figure:: img/sched_hier_per_port.svg Scheduling Hierarchy per Port @@ -171,7 +171,7 @@ The functionality of each hierarchical level is detailed in the following table. | | | | token bucket per pipe. | | | | | | +---+--------------------+----------------------------+---------------------------------------------------------------+ - | 4 | Traffic Class (TC) | 4 | #. TCs of the same pipe handled in strict priority order. | + | 4 | Traffic Class (TC) | 13 | #. TCs of the same pipe handled in strict priority order. | | | | | | | | | | #. Upper limit enforced per TC at the pipe level. | | | | | | @@ -183,8 +183,13 @@ The functionality of each hierarchical level is detailed in the following table. | | | | adjusted value that is shared by all the subport pipes. | | | | | | +---+--------------------+----------------------------+---------------------------------------------------------------+ - | 5 | Queue | 4 | #. Queues of the same TC are serviced using Weighted Round | - | | | | Robin (WRR) according to predefined weights. | + | 5 | Queue | High priority TCs: 1, | #. All the high priority TCs (TC0, TC1, ...,TC11) have | + | | | Lowest priority TC: 4 | exactly 1 queue, while the lowest priority TC (TC12), | + | | | | called Best Effort (BE), has 4 queues. | + | | | | | + | | | | #. Queues of the lowest priority TC (BE) are serviced using | + | | | | Weighted Round Robin (WRR) according to predefined weights| + | | | | weights. | | | | | | +---+--------------------+----------------------------+---------------------------------------------------------------+ @@ -730,10 +735,10 @@ Implementation of Strict Priority Scheduling Strict priority scheduling of traffic classes within the same pipe is implemented by the pipe dequeue state machine, which selects the queues in ascending order. -Therefore, queues 0..3 (associated with TC 0, highest priority TC) are handled before -queues 4..7 (TC 1, lower priority than TC 0), -which are handled before queues 8..11 (TC 2), -which are handled before queues 12..15 (TC 3, lowest priority TC). +Therefore, queue 0 (associated with TC 0, highest priority TC) is handled before +queue 1 (TC 1, lower priority than TC 0), +which is handled before queue 2 (TC 2, lower priority than TC 1) and it conitnues until queues of all TCs except the +lowest priority TC are handled. At last, queues 12..15 (best effort TC, lowest priority TC) are handled. Upper Limit Enforcement ''''''''''''''''''''''' @@ -753,14 +758,14 @@ as described in :numref:`table_qos_10` and :numref:`table_qos_11`. | # | Subport or pipe field | Unit | Description | | | | | | +===+=======================+=======+=======================================================================+ - | 1 | tc_time | Bytes | Time of the next update (upper limit refill) for the 4 TCs of the | + | 1 | tc_time | Bytes | Time of the next update (upper limit refill) for the TCs of the | | | | | current subport / pipe. | | | | | | | | | | See Section `Internal Time Reference`_ for the | | | | | explanation of why the time is maintained in byte units. | | | | | | +---+-----------------------+-------+-----------------------------------------------------------------------+ - | 2 | tc_period | Bytes | Time between two consecutive updates for the 4 TCs of the current | + | 2 | tc_period | Bytes | Time between two consecutive updates for the all TCs of the current | | | | | subport / pipe. This is expected to be many times bigger than the | | | | | typical value of the token bucket tb_period. | | | | | | @@ -815,7 +820,7 @@ as described in :numref:`table_qos_10` and :numref:`table_qos_11`. Weighted Round Robin (WRR) """""""""""""""""""""""""" -The evolution of the WRR design solution from simple to complex is shown in :numref:`table_qos_12`. +The evolution of the WRR design solution for the lowest priority traffic class (best effort TC) from simple to complex is shown in :numref:`table_qos_12`. .. _table_qos_12: @@ -977,33 +982,33 @@ with the third approach selected for implementation. | | | | +-----+---------------------------+-------------------------------------------------------------------------+ -Typically, the subport TC oversubscription feature is enabled only for the lowest priority traffic class (TC 3), +Typically, the subport TC oversubscription feature is enabled only for the lowest priority traffic class, which is typically used for best effort traffic, with the management plane preventing this condition from occurring for the other (higher priority) traffic classes. -To ease implementation, it is also assumed that the upper limit for subport TC 3 is set to 100% of the subport rate, -and that the upper limit for pipe TC 3 is set to 100% of pipe rate for all subport member pipes. +To ease implementation, it is also assumed that the upper limit for subport best effort TC is set to 100% of the subport rate, +and that the upper limit for pipe best effort TC is set to 100% of pipe rate for all subport member pipes. Implementation Overview ''''''''''''''''''''''' The algorithm computes a watermark, which is periodically updated based on the current demand experienced by the subport member pipes, -whose purpose is to limit the amount of traffic that each pipe is allowed to send for TC 3. +whose purpose is to limit the amount of traffic that each pipe is allowed to send for best effort TC. The watermark is computed at the subport level at the beginning of each traffic class upper limit enforcement period and the same value is used by all the subport member pipes throughout the current enforcement period. illustrates how the watermark computed as subport level at the beginning of each period is propagated to all subport member pipes. At the beginning of the current enforcement period (which coincides with the end of the previous enforcement period), -the value of the watermark is adjusted based on the amount of bandwidth allocated to TC 3 at the beginning of the previous period that +the value of the watermark is adjusted based on the amount of bandwidth allocated to best effort TC at the beginning of the previous period that was not left unused by the subport member pipes at the end of the previous period. -If there was subport TC 3 bandwidth left unused, +If there was subport best effort TC bandwidth left unused, the value of the watermark for the current period is increased to encourage the subport member pipes to consume more bandwidth. -Otherwise, the value of the watermark is decreased to enforce equality of bandwidth consumption among subport member pipes for TC 3. +Otherwise, the value of the watermark is decreased to enforce equality of bandwidth consumption among subport member pipes for best effort TC. The increase or decrease in the watermark value is done in small increments, so several enforcement periods might be required to reach the equilibrium state. -This state can change at any moment due to variations in the demand experienced by the subport member pipes for TC 3, for example, +This state can change at any moment due to variations in the demand experienced by the subport member pipes for best effort TC, for example, as a result of demand increase (when the watermark needs to be lowered) or demand decrease (when the watermark needs to be increased). When demand is low, the watermark is set high to prevent it from impeding the subport member pipes from consuming more bandwidth. @@ -1084,10 +1089,27 @@ The highest value for the watermark is picked as the highest rate configured for | | | | | | | tc3_cons = subport_tc3_credits_per_period - subport_tc3_credits; | | | | | - | | | tc3_cons_max = subport_tc3_credits_per_period - (tc0_cons + tc1_cons + | - | | | tc2_cons); | + | | | tc4_cons = subport_tc4_credits_per_period - subport_tc4_credits; | + | | | | + | | | tc5_cons = subport_tc5_credits_per_period - subport_tc5_credits; | + | | | | + | | | tc6_cons = subport_tc6_credits_per_period - subport_tc6_credits; | + | | | | + | | | tc7_cons = subport_tc7_credits_per_period - subport_tc7_credits; | + | | | | + | | | tc8_cons = subport_tc8_credits_per_period - subport_tc8_credits; | | | | | - | | | if(tc3_consumption > (tc3_consumption_max - MTU)){ | + | | | tc9_cons = subport_tc9_credits_per_period - subport_tc9_credits; | + | | | | + | | | tc10_cons = subport_tc10_credits_per_period - subport_tc10_credits; | + | | | | + | | | tc11_cons = subport_tc11_credits_per_period - subport_tc11_credits; | + | | | | + | | | tc_be_cons_max = subport_tc_be_credits_per_period - (tc0_cons + tc1_cons + | + | | | tc2_cons + tc3_cons + tc4_cons + tc5_cons + tc6_cons + tc7_cons + tc8_cons + | + | | | tc9_cons + tc10_cons + tc11_cons); | + | | | | + | | | if(tc_be_consumption > (tc_be_consumption_max - MTU)){ | | | | | | | | wm -= wm >> 7; | | | | | @@ -1555,6 +1577,52 @@ A sample RED configuration is shown below. In this example, the queue size is 64 tc 3 wred inv prob = 10 10 10 tc 3 wred weight = 9 9 9 + tc 4 wred min = 28 22 16 + tc 4 wred max = 32 32 32 + tc 4 wred inv prob = 10 10 10 + tc 4 wred weight = 9 9 9 + + tc 5 wred min = 28 22 16 + tc 5 wred max = 32 32 32 + tc 5 wred inv prob = 10 10 10 + tc 5 wred weight = 9 9 9 + + tc 6 wred min = 28 22 16 + tc 6 wred max = 32 32 32 + tc 6 wred inv prob = 10 10 10 + tc 6 wred weight = 9 9 9 + + tc 7 wred min = 28 22 16 + tc 7 wred max = 32 32 32 + tc 7 wred inv prob = 10 10 10 + tc 7 wred weight = 9 9 9 + + tc 8 wred min = 28 22 16 + tc 8 wred max = 32 32 32 + tc 8 wred inv prob = 10 10 10 + tc 8 wred weight = 9 9 9 + + tc 9 wred min = 28 22 16 + tc 9 wred max = 32 32 32 + tc 9 wred inv prob = 10 10 10 + tc 9 wred weight = 9 9 9 + + + tc 10 wred min = 28 22 16 + tc 10 wred max = 32 32 32 + tc 10 wred inv prob = 10 10 10 + tc 10 wred weight = 9 9 9 + + tc 11 wred min = 28 22 16 + tc 11 wred max = 32 32 32 + tc 11 wred inv prob = 10 10 10 + tc 11 wred weight = 9 9 9 + + tc 12 wred min = 28 22 16 + tc 12 wred max = 32 32 32 + tc 12 wred inv prob = 10 10 10 + tc 12 wred weight = 9 9 9 + With this configuration file, the RED configuration that applies to green, yellow and red packets in traffic class 0 is shown in :numref:`table_qos_18`. -- 2.21.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH 2/3] examples/qos_sched: documentation update 2019-10-29 13:19 [dpdk-dev] [PATCH 1/3] sched: documentation update Jasvinder Singh @ 2019-10-29 13:19 ` Jasvinder Singh 2019-11-04 10:29 ` Dumitrescu, Cristian 2019-10-29 13:19 ` [dpdk-dev] [PATCH 3/3] examples/ip_pipeline: " Jasvinder Singh ` (4 subsequent siblings) 5 siblings, 1 reply; 13+ messages in thread From: Jasvinder Singh @ 2019-10-29 13:19 UTC (permalink / raw) To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic Update documentation according to the changes made to qos sample app. Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> --- doc/guides/sample_app_ug/qos_scheduler.rst | 92 +++++++++++++++++++--- 1 file changed, 81 insertions(+), 11 deletions(-) diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst index cdd29d90c..b5010657a 100644 --- a/doc/guides/sample_app_ug/qos_scheduler.rst +++ b/doc/guides/sample_app_ug/qos_scheduler.rst @@ -22,7 +22,7 @@ There are two flavors of the runtime execution for this application, with two or three threads per each packet flow configuration being used. The RX thread reads packets from the RX port, classifies the packets based on the double VLAN (outer and inner) and -the lower two bytes of the IP destination address and puts them into the ring queue. +the lower byte of the IP destination address and puts them into the ring queue. The worker thread dequeues the packets from the ring and calls the QoS scheduler enqueue/dequeue functions. If a separate TX core is used, these are sent to the TX ring. Otherwise, they are sent directly to the TX port. @@ -129,18 +129,28 @@ The profile file has the following format: frame overhead = 24 number of subports per port = 1 - number of pipes per subport = 4096 - queue sizes = 64 64 64 64 ; Subport configuration [subport 0] + number of pipes per subport = 4096 + queue sizes = 64 64 64 64 64 64 64 64 64 64 64 64 64 tb rate = 1250000000; Bytes per second tb size = 1000000; Bytes tc 0 rate = 1250000000; Bytes per second tc 1 rate = 1250000000; Bytes per second tc 2 rate = 1250000000; Bytes per second tc 3 rate = 1250000000; Bytes per second + tc 4 rate = 1250000000; Bytes per second + tc 5 rate = 1250000000; Bytes per second + tc 6 rate = 1250000000; Bytes per second + tc 7 rate = 1250000000; Bytes per second + tc 8 rate = 1250000000; Bytes per second + tc 9 rate = 1250000000; Bytes per second + tc 10 rate = 1250000000; Bytes per second + tc 11 rate = 1250000000; Bytes per second + tc 12 rate = 1250000000; Bytes per second + tc period = 10; Milliseconds tc oversubscription period = 10; Milliseconds @@ -156,17 +166,32 @@ The profile file has the following format: tc 1 rate = 305175; Bytes per second tc 2 rate = 305175; Bytes per second tc 3 rate = 305175; Bytes per second + tc 4 rate = 305175; Bytes per second + tc 5 rate = 305175; Bytes per second + tc 6 rate = 305175; Bytes per second + tc 7 rate = 305175; Bytes per second + tc 8 rate = 305175; Bytes per second + tc 9 rate = 305175; Bytes per second + tc 10 rate = 305175; Bytes per second + tc 11 rate = 305175; Bytes per second + tc 12 rate = 305175; Bytes per second tc period = 40; Milliseconds tc 0 oversubscription weight = 1 tc 1 oversubscription weight = 1 tc 2 oversubscription weight = 1 tc 3 oversubscription weight = 1 - - tc 0 wrr weights = 1 1 1 1 - tc 1 wrr weights = 1 1 1 1 - tc 2 wrr weights = 1 1 1 1 - tc 3 wrr weights = 1 1 1 1 + tc 4 oversubscription weight = 1 + tc 5 oversubscription weight = 1 + tc 6 oversubscription weight = 1 + tc 7 oversubscription weight = 1 + tc 8 oversubscription weight = 1 + tc 9 oversubscription weight = 1 + tc 10 oversubscription weight = 1 + tc 11 oversubscription weight = 1 + tc 12 oversubscription weight = 1 + + tc 12 wrr weights = 1 1 1 1 ; RED params per traffic class and color (Green / Yellow / Red) @@ -191,6 +216,51 @@ The profile file has the following format: tc 3 wred inv prob = 10 10 10 tc 3 wred weight = 9 9 9 + tc 4 wred min = 48 40 32 + tc 4 wred max = 64 64 64 + tc 4 wred inv prob = 10 10 10 + tc 4 wred weight = 9 9 9 + + tc 5 wred min = 48 40 32 + tc 5 wred max = 64 64 64 + tc 5 wred inv prob = 10 10 10 + tc 5 wred weight = 9 9 9 + + tc 6 wred min = 48 40 32 + tc 6 wred max = 64 64 64 + tc 6 wred inv prob = 10 10 10 + tc 6 wred weight = 9 9 9 + + tc 7 wred min = 48 40 32 + tc 7 wred max = 64 64 64 + tc 7 wred inv prob = 10 10 10 + tc 7 wred weight = 9 9 9 + + tc 8 wred min = 48 40 32 + tc 8 wred max = 64 64 64 + tc 8 wred inv prob = 10 10 10 + tc 8 wred weight = 9 9 9 + + tc 9 wred min = 48 40 32 + tc 9 wred max = 64 64 64 + tc 9 wred inv prob = 10 10 10 + tc 9 wred weight = 9 9 9 + + tc 10 wred min = 48 40 32 + tc 10 wred max = 64 64 64 + tc 10 wred inv prob = 10 10 10 + tc 10 wred weight = 9 9 9 + + tc 11 wred min = 48 40 32 + tc 11 wred max = 64 64 64 + tc 11 wred inv prob = 10 10 10 + tc 11 wred weight = 9 9 9 + + tc 12 wred min = 48 40 32 + tc 12 wred max = 64 64 64 + tc 12 wred inv prob = 10 10 10 + tc 12 wred weight = 9 9 9 + Interactive mode ~~~~~~~~~~~~~~~~ @@ -295,11 +365,11 @@ This application classifies based on the QinQ double VLAN tags and the IP destin | Pipe | Config (4k) | Traffic shaped (token bucket) | Inner VLAN tag | | | | | | +----------------+-------------------------+--------------------------------------------------+----------------------------------+ - | Traffic Class | 4 | TCs of the same pipe services in strict priority | Destination IP address (0.0.X.0) | + | Traffic Class | 13 | TCs of the same pipe services in strict priority | Destination IP address (0.0.0.X) | | | | | | +----------------+-------------------------+--------------------------------------------------+----------------------------------+ - | Queue | 4 | Queue of the same TC serviced in WRR | Destination IP address (0.0.0.X) | - | | | | | + | Queue | High Priority TC: 1, | Queue of lowest priority traffic | Destination IP address (0.0.0.X) | + | | Lowest Priority TC: 4 | class (Best effort) serviced in WRR | | +----------------+-------------------------+--------------------------------------------------+----------------------------------+ Please refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information about these parameters. -- 2.21.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH 2/3] examples/qos_sched: documentation update 2019-10-29 13:19 ` [dpdk-dev] [PATCH 2/3] examples/qos_sched: " Jasvinder Singh @ 2019-11-04 10:29 ` Dumitrescu, Cristian 0 siblings, 0 replies; 13+ messages in thread From: Dumitrescu, Cristian @ 2019-11-04 10:29 UTC (permalink / raw) To: Singh, Jasvinder, dev; +Cc: Mcnamara, John, Kovacevic, Marko > -----Original Message----- > From: Singh, Jasvinder <jasvinder.singh@intel.com> > Sent: Tuesday, October 29, 2019 1:20 PM > To: dev@dpdk.org > Cc: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; Mcnamara, John > <john.mcnamara@intel.com>; Kovacevic, Marko > <marko.kovacevic@intel.com> > Subject: [PATCH 2/3] examples/qos_sched: documentation update > > Update documentation according to the changes made to qos sample > app. > > Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> > --- > doc/guides/sample_app_ug/qos_scheduler.rst | 92 > +++++++++++++++++++--- > 1 file changed, 81 insertions(+), 11 deletions(-) > > diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst > b/doc/guides/sample_app_ug/qos_scheduler.rst > index cdd29d90c..b5010657a 100644 > --- a/doc/guides/sample_app_ug/qos_scheduler.rst > +++ b/doc/guides/sample_app_ug/qos_scheduler.rst Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> ^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH 3/3] examples/ip_pipeline: documentation update 2019-10-29 13:19 [dpdk-dev] [PATCH 1/3] sched: documentation update Jasvinder Singh 2019-10-29 13:19 ` [dpdk-dev] [PATCH 2/3] examples/qos_sched: " Jasvinder Singh @ 2019-10-29 13:19 ` Jasvinder Singh 2019-11-04 10:29 ` Dumitrescu, Cristian 2019-11-04 10:30 ` [dpdk-dev] [PATCH 1/3] sched: " Dumitrescu, Cristian ` (3 subsequent siblings) 5 siblings, 1 reply; 13+ messages in thread From: Jasvinder Singh @ 2019-10-29 13:19 UTC (permalink / raw) To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic Updates documentation for traffic manager cli as per the changes made to qos scheduler library. Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> --- doc/guides/sample_app_ug/ip_pipeline.rst | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/doc/guides/sample_app_ug/ip_pipeline.rst b/doc/guides/sample_app_ug/ip_pipeline.rst index 4da0fcf89..56014be17 100644 --- a/doc/guides/sample_app_ug/ip_pipeline.rst +++ b/doc/guides/sample_app_ug/ip_pipeline.rst @@ -249,27 +249,35 @@ Traffic manager tmgr subport profile <tb_rate> <tb_size> - <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> + <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate> + <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate> + <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate> <tc_period> - + pps <n_pipes_per_subport> + qsize <qsize_tc0> <qsize_tc1> <qsize_tc2> + <qsize_tc3> <qsize_tc4> <qsize_tc5> <qsize_tc6> + <qsize_tc7> <qsize_tc8> <qsize_tc9> <qsize_tc10> + <qsize_tc11> <qsize_tc12> Add traffic manager pipe profile :: tmgr pipe profile <tb_rate> <tb_size> - <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> + <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate> + <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate> + <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate> <tc_period> - <tc_ov_weight> <wrr_weight0..15> + <tc_ov_weight> + <wrr_weight0..3> Create traffic manager port :: tmgr <tmgr_name> rate <rate> spp <n_subports_per_port> - pps <n_pipes_per_subport> - qsize <qsize_tc0> - <qsize_tc1> <qsize_tc2> <qsize_tc3> - fo <frame_overhead> mtu <mtu> cpu <cpu_id> + fo <frame_overhead> + mtu <mtu> + cpu <cpu_id> Configure traffic manager subport :: -- 2.21.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH 3/3] examples/ip_pipeline: documentation update 2019-10-29 13:19 ` [dpdk-dev] [PATCH 3/3] examples/ip_pipeline: " Jasvinder Singh @ 2019-11-04 10:29 ` Dumitrescu, Cristian 0 siblings, 0 replies; 13+ messages in thread From: Dumitrescu, Cristian @ 2019-11-04 10:29 UTC (permalink / raw) To: Singh, Jasvinder, dev; +Cc: Mcnamara, John, Kovacevic, Marko > -----Original Message----- > From: Singh, Jasvinder <jasvinder.singh@intel.com> > Sent: Tuesday, October 29, 2019 1:20 PM > To: dev@dpdk.org > Cc: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; Mcnamara, John > <john.mcnamara@intel.com>; Kovacevic, Marko > <marko.kovacevic@intel.com> > Subject: [PATCH 3/3] examples/ip_pipeline: documentation update > > Updates documentation for traffic manager cli as per the changes > made to qos scheduler library. > > Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> > --- > doc/guides/sample_app_ug/ip_pipeline.rst | 24 ++++++++++++++++-------- > 1 file changed, 16 insertions(+), 8 deletions(-) > Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH 1/3] sched: documentation update 2019-10-29 13:19 [dpdk-dev] [PATCH 1/3] sched: documentation update Jasvinder Singh 2019-10-29 13:19 ` [dpdk-dev] [PATCH 2/3] examples/qos_sched: " Jasvinder Singh 2019-10-29 13:19 ` [dpdk-dev] [PATCH 3/3] examples/ip_pipeline: " Jasvinder Singh @ 2019-11-04 10:30 ` Dumitrescu, Cristian 2019-11-26 8:47 ` Thomas Monjalon ` (2 subsequent siblings) 5 siblings, 0 replies; 13+ messages in thread From: Dumitrescu, Cristian @ 2019-11-04 10:30 UTC (permalink / raw) To: Singh, Jasvinder, dev; +Cc: Mcnamara, John, Kovacevic, Marko > -----Original Message----- > From: Singh, Jasvinder <jasvinder.singh@intel.com> > Sent: Tuesday, October 29, 2019 1:20 PM > To: dev@dpdk.org > Cc: Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; Mcnamara, John > <john.mcnamara@intel.com>; Kovacevic, Marko > <marko.kovacevic@intel.com> > Subject: [PATCH 1/3] sched: documentation update > > Updates documentation to reflect the changes in the qos scheduler > library. > > Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> > --- Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH 1/3] sched: documentation update 2019-10-29 13:19 [dpdk-dev] [PATCH 1/3] sched: documentation update Jasvinder Singh ` (2 preceding siblings ...) 2019-11-04 10:30 ` [dpdk-dev] [PATCH 1/3] sched: " Dumitrescu, Cristian @ 2019-11-26 8:47 ` Thomas Monjalon 2019-11-26 9:16 ` Thomas Monjalon 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 " Jasvinder Singh 5 siblings, 0 replies; 13+ messages in thread From: Thomas Monjalon @ 2019-11-26 8:47 UTC (permalink / raw) To: Jasvinder Singh; +Cc: dev, cristian.dumitrescu, john.mcnamara, marko.kovacevic 29/10/2019 14:19, Jasvinder Singh: > Updates documentation to reflect the changes in the qos scheduler > library. > > Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> > --- > .../prog_guide/img/sched_hier_per_port.png | Bin 58973 -> 0 bytes > .../prog_guide/img/sched_hier_per_port.svg | Bin 0 -> 1463490 bytes [...] > -.. figure:: img/sched_hier_per_port.* > +.. figure:: img/sched_hier_per_port.svg checkpatches.sh raises this warning: Warning in /doc/guides/prog_guide/qos_framework.rst: Using explicit .svg extension instead of .* Wildcard is needed because PDF build converts svg to png. I will fix when applying. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH 1/3] sched: documentation update 2019-10-29 13:19 [dpdk-dev] [PATCH 1/3] sched: documentation update Jasvinder Singh ` (3 preceding siblings ...) 2019-11-26 8:47 ` Thomas Monjalon @ 2019-11-26 9:16 ` Thomas Monjalon 2019-11-26 9:55 ` Singh, Jasvinder 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 " Jasvinder Singh 5 siblings, 1 reply; 13+ messages in thread From: Thomas Monjalon @ 2019-11-26 9:16 UTC (permalink / raw) To: Jasvinder Singh; +Cc: dev, cristian.dumitrescu, john.mcnamara, marko.kovacevic 29/10/2019 14:19, Jasvinder Singh: > diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.svg b/doc/guides/prog_guide/img/sched_hier_per_port.svg > new file mode 100644 > index 0000000000000000000000000000000000000000..d77ee70a2dd06eedc2c10f44621902921a820806 > GIT binary patch I missed it. This is not a SVG file. I hope it is a mistake. Please do not send any binary file. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH 1/3] sched: documentation update 2019-11-26 9:16 ` Thomas Monjalon @ 2019-11-26 9:55 ` Singh, Jasvinder 0 siblings, 0 replies; 13+ messages in thread From: Singh, Jasvinder @ 2019-11-26 9:55 UTC (permalink / raw) To: Thomas Monjalon Cc: dev, Dumitrescu, Cristian, Mcnamara, John, Kovacevic, Marko > -----Original Message----- > From: Thomas Monjalon <thomas@monjalon.net> > Sent: Tuesday, November 26, 2019 9:17 AM > To: Singh, Jasvinder <jasvinder.singh@intel.com> > Cc: dev@dpdk.org; Dumitrescu, Cristian <cristian.dumitrescu@intel.com>; > Mcnamara, John <john.mcnamara@intel.com>; Kovacevic, Marko > <marko.kovacevic@intel.com> > Subject: Re: [dpdk-dev] [PATCH 1/3] sched: documentation update > > 29/10/2019 14:19, Jasvinder Singh: > > diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.svg > b/doc/guides/prog_guide/img/sched_hier_per_port.svg > > new file mode 100644 > > index > 0000000000000000000000000000000000000000..d77ee70a2dd06eedc2c10f446 > 21902921a820806 > > GIT binary patch > > I missed it. > This is not a SVG file. I hope it is a mistake. > Please do not send any binary file. > No clue from where this binary came. Will fix and send another version. Thanks. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v2 1/3] sched: documentation update 2019-10-29 13:19 [dpdk-dev] [PATCH 1/3] sched: documentation update Jasvinder Singh ` (4 preceding siblings ...) 2019-11-26 9:16 ` Thomas Monjalon @ 2019-11-26 14:28 ` Jasvinder Singh 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 2/3] examples/qos_sched: " Jasvinder Singh ` (2 more replies) 5 siblings, 3 replies; 13+ messages in thread From: Jasvinder Singh @ 2019-11-26 14:28 UTC (permalink / raw) To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic, thomas Updates documentation to reflect the changes in the qos scheduler library. Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> --- v2: - fix svg format .../prog_guide/img/sched_hier_per_port.png | Bin 58973 -> 0 bytes .../prog_guide/img/sched_hier_per_port.svg | 492 ++++++++++++++++++ doc/guides/prog_guide/qos_framework.rst | 110 +++- 3 files changed, 581 insertions(+), 21 deletions(-) delete mode 100644 doc/guides/prog_guide/img/sched_hier_per_port.png create mode 100644 doc/guides/prog_guide/img/sched_hier_per_port.svg diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.png b/doc/guides/prog_guide/img/sched_hier_per_port.png deleted file mode 100644 index 462e88aaab4418d8893137659a08ee43f97842d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58973 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 b-2Q;{!goGRpvI5)3GjI@r6gG<ZWQ!CP87o# diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.svg b/doc/guides/prog_guide/img/sched_hier_per_port.svg new file mode 100644 index 000000000..7e011a60e --- /dev/null +++ b/doc/guides/prog_guide/img/sched_hier_per_port.svg @@ -0,0 +1,492 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by Microsoft Visio, SVG Export sched_hier_per_port.svg Page-1 --> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" + xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="6.25057in" height="7.26839in" + viewBox="0 0 450.041 523.324" xml:space="preserve" color-interpolation-filters="sRGB" class="st8"> + <v:documentProperties v:langID="2057" v:metric="true" v:viewMarkup="false"/> + + <style type="text/css"> + <![CDATA[ + .st1 {fill:#0070c0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st2 {marker-end:url(#mrkr13-71);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st3 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.37313432835821} + .st4 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st5 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st6 {fill:#000000;font-family:Calibri;font-size:1.16666em} + .st7 {font-size:1em} + .st8 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs id="Markers"> + <g id="lend13"> + <path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"/> + </g> + <marker id="mrkr13-71" class="st3" v:arrowType="13" v:arrowSize="2" v:setback="8.04" refX="-8.04" orient="auto" + markerUnits="strokeWidth" overflow="visible"> + <use xlink:href="#lend13" transform="scale(-2.68,-2.68) "/> + </marker> + </defs> + <g v:mID="0" v:index="1" v:groupContext="foregroundPage"> + <title>Page-1</title> + <v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394" + v:shadowOffsetY="-8.50394"/> + <v:layer v:name="Connector" v:index="0"/> + <g id="group234-1" transform="translate(0.375,-12.7124)" v:mID="234" v:groupContext="group"> + <title>Sheet.234</title> + <g id="shape1-2" v:mID="1" v:groupContext="shape" transform="translate(265.039,-113.796)"> + <title>Sheet.1</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape2-4" v:mID="2" v:groupContext="shape" transform="translate(265.039,-98.3577)"> + <title>Sheet.2</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape3-6" v:mID="3" v:groupContext="shape" transform="translate(265.039,-82.9192)"> + <title>Sheet.3</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape4-8" v:mID="4" v:groupContext="shape" transform="translate(265.039,-67.4807)"> + <title>Sheet.4</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape6-10" v:mID="6" v:groupContext="shape" transform="translate(288.197,-113.796)"> + <title>Sheet.6</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape7-12" v:mID="7" v:groupContext="shape" transform="translate(288.197,-98.3577)"> + <title>Sheet.7</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape8-14" v:mID="8" v:groupContext="shape" transform="translate(288.197,-82.9192)"> + <title>Sheet.8</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape9-16" v:mID="9" v:groupContext="shape" transform="translate(288.197,-67.4807)"> + <title>Sheet.9</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape10-18" v:mID="10" v:groupContext="shape" transform="translate(311.355,-113.796)"> + <title>Sheet.10</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape11-20" v:mID="11" v:groupContext="shape" transform="translate(311.355,-98.3577)"> + <title>Sheet.11</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape12-22" v:mID="12" v:groupContext="shape" transform="translate(311.355,-82.9192)"> + <title>Sheet.12</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape13-24" v:mID="13" v:groupContext="shape" transform="translate(311.355,-67.4807)"> + <title>Sheet.13</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape14-26" v:mID="14" v:groupContext="shape" transform="translate(334.513,-113.796)"> + <title>Sheet.14</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape15-28" v:mID="15" v:groupContext="shape" transform="translate(334.513,-98.3577)"> + <title>Sheet.15</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape16-30" v:mID="16" v:groupContext="shape" transform="translate(334.513,-82.9192)"> + <title>Sheet.16</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape17-32" v:mID="17" v:groupContext="shape" transform="translate(334.513,-67.4807)"> + <title>Sheet.17</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape26-34" v:mID="26" v:groupContext="shape" transform="translate(199.484,-113.968)"> + <title>Sheet.26</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape27-36" v:mID="27" v:groupContext="shape" transform="translate(199.484,-98.3577)"> + <title>Sheet.27</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape28-38" v:mID="28" v:groupContext="shape" transform="translate(199.484,-82.7471)"> + <title>Sheet.28</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape29-40" v:mID="29" v:groupContext="shape" transform="translate(199.484,-67.1365)"> + <title>Sheet.29</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape30-42" v:mID="30" v:groupContext="shape" transform="translate(68.9749,-115.97)"> + <title>Sheet.30</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape31-44" v:mID="31" v:groupContext="shape" transform="translate(68.9749,-100.65)"> + <title>Sheet.31</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape32-46" v:mID="32" v:groupContext="shape" transform="translate(68.9749,-85.3307)"> + <title>Sheet.32</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape33-48" v:mID="33" v:groupContext="shape" transform="translate(68.9749,-70.0112)"> + <title>Sheet.33</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape40-50" v:mID="40" v:groupContext="shape" transform="translate(67.8551,-198.425)"> + <title>Sheet.40</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape42-52" v:mID="42" v:groupContext="shape" transform="translate(198.153,-205.871)"> + <title>Sheet.42</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape44-54" v:mID="44" v:groupContext="shape" transform="translate(297.427,-205.871)"> + <title>Sheet.44</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape46-56" v:mID="46" v:groupContext="shape" transform="translate(170.852,-306.005)"> + <title>Sheet.46</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape47-58" v:mID="47" v:groupContext="shape" transform="translate(255.236,-388.69)"> + <title>Sheet.47</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape48-60" v:mID="48" v:groupContext="shape" transform="translate(341.169,-317.821)"> + <title>Sheet.48</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape49-62" v:mID="49" v:groupContext="shape" transform="translate(344.583,-470.722)"> + <title>Sheet.49</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape50-64" v:mID="50" v:groupContext="shape" transform="translate(426.955,-399.855)"> + <title>Sheet.50</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape51-66" v:mID="51" v:groupContext="shape" v:layerMember="0" transform="translate(86.747,-217.661)"> + <title>Dynamic connector</title> + <path d="M0 523.32 L79.21 440.59" class="st2"/> + </g> + <g id="shape52-72" v:mID="52" v:groupContext="shape" v:layerMember="0" transform="translate(71.6902,-131.289)"> + <title>Dynamic connector.52</title> + <path d="M6.9 523.32 L7.21 468.25" class="st2"/> + </g> + <g id="shape157-77" v:mID="157" v:groupContext="shape" v:layerMember="0" transform="translate(202.193,-129.579)"> + <title>Dynamic connector.157</title> + <path d="M7.05 523.32 L7.11 459.09" class="st2"/> + </g> + <g id="shape158-82" v:mID="158" v:groupContext="shape" v:layerMember="0" transform="translate(206.384,-227.814)"> + <title>Dynamic connector.158</title> + <path d="M0 523.32 L-18.25 456.38" class="st2"/> + </g> + <g id="shape159-87" v:mID="159" v:groupContext="shape" v:layerMember="0" transform="translate(299.837,-223.969)"> + <title>Dynamic connector.159</title> + <path d="M0 523.32 L-99.6 444.53" class="st2"/> + </g> + <g id="shape160-92" v:mID="160" v:groupContext="shape" v:layerMember="0" transform="translate(295.944,-129.235)"> + <title>Dynamic connector.160</title> + <path d="M2.77 523.32 L10.05 458.6" class="st2"/> + </g> + <g id="shape161-97" v:mID="161" v:groupContext="shape" v:layerMember="0" transform="translate(277.428,-129.235)"> + <title>Dynamic connector.161</title> + <path d="M0 523.32 L23.4 457.41" class="st2"/> + </g> + <g id="shape162-102" v:mID="162" v:groupContext="shape" v:layerMember="0" transform="translate(322.104,-129.235)"> + <title>Dynamic connector.162</title> + <path d="M-2.1 523.32 L-10.52 458.55" class="st2"/> + </g> + <g id="shape163-107" v:mID="163" v:groupContext="shape" v:layerMember="0" transform="translate(341.288,-129.235)"> + <title>Dynamic connector.163</title> + <path d="M0 523.32 L-24.59 457.29" class="st2"/> + </g> + <g id="shape164-112" v:mID="164" v:groupContext="shape" v:layerMember="0" transform="translate(111.288,-84.3465)"> + <title>Dynamic connector.164</title> + <path d="M0 516.63 L69.49 515.85" class="st4"/> + </g> + <g id="shape165-115" v:mID="165" v:groupContext="shape" v:layerMember="0" transform="translate(189.998,-324.99)"> + <title>Dynamic connector.165</title> + <path d="M0 523.32 L59.82 464.71" class="st2"/> + </g> + <g id="shape166-120" v:mID="166" v:groupContext="shape" v:layerMember="0" transform="translate(343.721,-336.095)"> + <title>Dynamic connector.166</title> + <path d="M0 523.32 L-59.4 474.34" class="st2"/> + </g> + <g id="shape167-125" v:mID="167" v:groupContext="shape" v:layerMember="0" transform="translate(274.631,-407.412)"> + <title>Dynamic connector.167</title> + <path d="M0 523.32 L64.01 464.55" class="st2"/> + </g> + <g id="shape168-130" v:mID="168" v:groupContext="shape" v:layerMember="0" transform="translate(429.657,-418.308)"> + <title>Dynamic connector.168</title> + <path d="M0 523.32 L-56.3 474.89" class="st2"/> + </g> + <g id="shape170-135" v:mID="170" v:groupContext="shape" v:layerMember="0" transform="translate(70.9299,-2.87469)"> + <title>Dynamic connector.170</title> + <path d="M6.65 523.32 L7.36 468.25" class="st2"/> + </g> + <g id="shape171-140" v:mID="171" v:groupContext="shape" v:layerMember="0" transform="translate(201.964,1.13687E-13)"> + <title>Dynamic connector.171</title> + <path d="M6.93 523.32 L7.19 468.25" class="st2"/> + </g> + <g id="shape172-145" v:mID="172" v:groupContext="shape" v:layerMember="0" transform="translate(267.581,-0.34415)"> + <title>Dynamic connector.172</title> + <path d="M7.07 523.32 L7.1 468.25" class="st2"/> + </g> + <g id="shape173-150" v:mID="173" v:groupContext="shape" v:layerMember="0" transform="translate(290.626,-0.34415)"> + <title>Dynamic connector.173</title> + <path d="M6.98 523.32 L7.16 468.25" class="st2"/> + </g> + <g id="shape174-155" v:mID="174" v:groupContext="shape" v:layerMember="0" transform="translate(328.373,-0.34415)"> + <title>Dynamic connector.174</title> + <path d="M-6.86 523.32 L-7.23 468.25" class="st2"/> + </g> + <g id="shape175-160" v:mID="175" v:groupContext="shape" v:layerMember="0" transform="translate(336.683,-0.344153)"> + <title>Dynamic connector.175</title> + <path d="M6.77 523.32 L7.29 468.25" class="st2"/> + </g> + <g id="shape176-165" v:mID="176" v:groupContext="shape" transform="translate(3.59712E-14,-85.0395)"> + <title>Sheet.176</title> + <desc>Queue</desc> + <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/> + <v:textRect cx="26.2205" cy="502.064" width="52.45" height="42.5197"/> + <rect x="0" y="480.804" width="52.4409" height="42.5197" class="st5"/> + <text x="7.19" y="506.26" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Queue</text> </g> + <g id="shape177-168" v:mID="177" v:groupContext="shape" transform="translate(265.039,-113.796)"> + <title>Sheet.177</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape178-170" v:mID="178" v:groupContext="shape" transform="translate(265.039,-98.3577)"> + <title>Sheet.178</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape179-172" v:mID="179" v:groupContext="shape" transform="translate(265.039,-82.9192)"> + <title>Sheet.179</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape180-174" v:mID="180" v:groupContext="shape" transform="translate(265.039,-67.4807)"> + <title>Sheet.180</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape181-176" v:mID="181" v:groupContext="shape" transform="translate(288.197,-113.796)"> + <title>Sheet.181</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape182-178" v:mID="182" v:groupContext="shape" transform="translate(288.197,-98.3577)"> + <title>Sheet.182</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape183-180" v:mID="183" v:groupContext="shape" transform="translate(288.197,-82.9192)"> + <title>Sheet.183</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape184-182" v:mID="184" v:groupContext="shape" transform="translate(288.197,-67.4807)"> + <title>Sheet.184</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape185-184" v:mID="185" v:groupContext="shape" transform="translate(311.355,-113.796)"> + <title>Sheet.185</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape186-186" v:mID="186" v:groupContext="shape" transform="translate(311.355,-98.3577)"> + <title>Sheet.186</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape187-188" v:mID="187" v:groupContext="shape" transform="translate(311.355,-82.9192)"> + <title>Sheet.187</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape188-190" v:mID="188" v:groupContext="shape" transform="translate(311.355,-67.4807)"> + <title>Sheet.188</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape189-192" v:mID="189" v:groupContext="shape" transform="translate(334.513,-113.796)"> + <title>Sheet.189</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape190-194" v:mID="190" v:groupContext="shape" transform="translate(334.513,-98.3577)"> + <title>Sheet.190</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape191-196" v:mID="191" v:groupContext="shape" transform="translate(334.513,-82.9192)"> + <title>Sheet.191</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape192-198" v:mID="192" v:groupContext="shape" transform="translate(334.513,-67.4807)"> + <title>Sheet.192</title> + <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/> + </g> + <g id="shape193-200" v:mID="193" v:groupContext="shape" transform="translate(199.484,-113.968)"> + <title>Sheet.193</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape194-202" v:mID="194" v:groupContext="shape" transform="translate(199.484,-98.3577)"> + <title>Sheet.194</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape195-204" v:mID="195" v:groupContext="shape" transform="translate(199.484,-82.7471)"> + <title>Sheet.195</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape196-206" v:mID="196" v:groupContext="shape" transform="translate(199.484,-67.1365)"> + <title>Sheet.196</title> + <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/> + </g> + <g id="shape197-208" v:mID="197" v:groupContext="shape" transform="translate(68.9749,-115.97)"> + <title>Sheet.197</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape198-210" v:mID="198" v:groupContext="shape" transform="translate(68.9749,-100.65)"> + <title>Sheet.198</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape199-212" v:mID="199" v:groupContext="shape" transform="translate(68.9749,-85.3307)"> + <title>Sheet.199</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape200-214" v:mID="200" v:groupContext="shape" transform="translate(68.9749,-70.0112)"> + <title>Sheet.200</title> + <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/> + </g> + <g id="shape201-216" v:mID="201" v:groupContext="shape" transform="translate(67.8551,-198.425)"> + <title>Sheet.201</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape202-218" v:mID="202" v:groupContext="shape" transform="translate(198.153,-205.871)"> + <title>Sheet.202</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape203-220" v:mID="203" v:groupContext="shape" transform="translate(297.427,-205.871)"> + <title>Sheet.203</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape204-222" v:mID="204" v:groupContext="shape" transform="translate(170.852,-306.005)"> + <title>Sheet.204</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape205-224" v:mID="205" v:groupContext="shape" transform="translate(255.236,-388.69)"> + <title>Sheet.205</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape206-226" v:mID="206" v:groupContext="shape" transform="translate(341.169,-317.821)"> + <title>Sheet.206</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape207-228" v:mID="207" v:groupContext="shape" transform="translate(344.583,-470.722)"> + <title>Sheet.207</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape208-230" v:mID="208" v:groupContext="shape" transform="translate(426.955,-399.855)"> + <title>Sheet.208</title> + <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/> + </g> + <g id="shape209-232" v:mID="209" v:groupContext="shape" v:layerMember="0" transform="translate(86.747,-217.661)"> + <title>Dynamic connector.209</title> + <path d="M0 523.32 L79.21 440.59" class="st2"/> + </g> + <g id="shape210-237" v:mID="210" v:groupContext="shape" v:layerMember="0" transform="translate(71.6902,-131.289)"> + <title>Dynamic connector.210</title> + <path d="M6.9 523.32 L7.21 468.25" class="st2"/> + </g> + <g id="shape211-242" v:mID="211" v:groupContext="shape" v:layerMember="0" transform="translate(202.193,-129.579)"> + <title>Dynamic connector.211</title> + <path d="M7.05 523.32 L7.11 459.09" class="st2"/> + </g> + <g id="shape212-247" v:mID="212" v:groupContext="shape" v:layerMember="0" transform="translate(206.384,-227.814)"> + <title>Dynamic connector.212</title> + <path d="M0 523.32 L-18.25 456.38" class="st2"/> + </g> + <g id="shape213-252" v:mID="213" v:groupContext="shape" v:layerMember="0" transform="translate(299.837,-223.969)"> + <title>Dynamic connector.213</title> + <path d="M0 523.32 L-99.6 444.53" class="st2"/> + </g> + <g id="shape214-257" v:mID="214" v:groupContext="shape" v:layerMember="0" transform="translate(295.944,-129.235)"> + <title>Dynamic connector.214</title> + <path d="M2.77 523.32 L10.05 458.6" class="st2"/> + </g> + <g id="shape215-262" v:mID="215" v:groupContext="shape" v:layerMember="0" transform="translate(277.428,-129.235)"> + <title>Dynamic connector.215</title> + <path d="M0 523.32 L23.4 457.41" class="st2"/> + </g> + <g id="shape216-267" v:mID="216" v:groupContext="shape" v:layerMember="0" transform="translate(322.104,-129.235)"> + <title>Dynamic connector.216</title> + <path d="M-2.1 523.32 L-10.52 458.55" class="st2"/> + </g> + <g id="shape217-272" v:mID="217" v:groupContext="shape" v:layerMember="0" transform="translate(341.288,-129.235)"> + <title>Dynamic connector.217</title> + <path d="M0 523.32 L-24.59 457.29" class="st2"/> + </g> + <g id="shape218-277" v:mID="218" v:groupContext="shape" v:layerMember="0" transform="translate(111.288,-84.3465)"> + <title>Dynamic connector.218</title> + <path d="M0 516.63 L69.49 515.85" class="st4"/> + </g> + <g id="shape219-280" v:mID="219" v:groupContext="shape" v:layerMember="0" transform="translate(189.998,-324.99)"> + <title>Dynamic connector.219</title> + <path d="M0 523.32 L59.82 464.71" class="st2"/> + </g> + <g id="shape220-285" v:mID="220" v:groupContext="shape" v:layerMember="0" transform="translate(343.721,-336.095)"> + <title>Dynamic connector.220</title> + <path d="M0 523.32 L-59.4 474.34" class="st2"/> + </g> + <g id="shape221-290" v:mID="221" v:groupContext="shape" v:layerMember="0" transform="translate(274.631,-407.412)"> + <title>Dynamic connector.221</title> + <path d="M0 523.32 L64.01 464.55" class="st2"/> + </g> + <g id="shape222-295" v:mID="222" v:groupContext="shape" v:layerMember="0" transform="translate(429.657,-418.308)"> + <title>Dynamic connector.222</title> + <path d="M0 523.32 L-56.3 474.89" class="st2"/> + </g> + <g id="shape223-300" v:mID="223" v:groupContext="shape" v:layerMember="0" transform="translate(70.9299,-2.87469)"> + <title>Dynamic connector.223</title> + <path d="M6.65 523.32 L7.36 468.25" class="st2"/> + </g> + <g id="shape224-305" v:mID="224" v:groupContext="shape" v:layerMember="0" transform="translate(201.964,1.13687E-13)"> + <title>Dynamic connector.224</title> + <path d="M6.93 523.32 L7.19 468.25" class="st2"/> + </g> + <g id="shape225-310" v:mID="225" v:groupContext="shape" v:layerMember="0" transform="translate(267.581,-0.34415)"> + <title>Dynamic connector.225</title> + <path d="M7.07 523.32 L7.1 468.25" class="st2"/> + </g> + <g id="shape226-315" v:mID="226" v:groupContext="shape" v:layerMember="0" transform="translate(290.626,-0.34415)"> + <title>Dynamic connector.226</title> + <path d="M6.98 523.32 L7.16 468.25" class="st2"/> + </g> + <g id="shape227-320" v:mID="227" v:groupContext="shape" v:layerMember="0" transform="translate(328.373,-0.34415)"> + <title>Dynamic connector.227</title> + <path d="M-6.86 523.32 L-7.23 468.25" class="st2"/> + </g> + <g id="shape228-325" v:mID="228" v:groupContext="shape" v:layerMember="0" transform="translate(336.683,-0.344153)"> + <title>Dynamic connector.228</title> + <path d="M6.77 523.32 L7.29 468.25" class="st2"/> + </g> + <g id="shape230-330" v:mID="230" v:groupContext="shape" transform="translate(9.92126,-185.273)"> + <title>Sheet.230</title> + <desc>Traffic Class</desc> + <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/> + <v:textRect cx="26.2205" cy="499.003" width="52.45" height="48.6423"/> + <rect x="0" y="474.681" width="52.4409" height="48.6423" class="st5"/> + <text x="8.18" y="494.8" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Traffic<v:newlineChar/><tspan + x="12.05" dy="1.2em" class="st7">Class</tspan></text> </g> + <g id="shape231-334" v:mID="231" v:groupContext="shape" transform="translate(113.386,-297.638)"> + <title>Sheet.231</title> + <desc>Pipe</desc> + <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/> + <v:textRect cx="26.2205" cy="499.003" width="52.45" height="48.6423"/> + <rect x="0" y="474.681" width="52.4409" height="48.6423" class="st5"/> + <text x="13.84" y="503.2" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Pipe</text> </g> + <g id="shape232-337" v:mID="232" v:groupContext="shape" transform="translate(185.669,-382.677)"> + <title>Sheet.232</title> + <desc>Subport</desc> + <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/> + <v:textRect cx="32.5984" cy="499.003" width="65.2" height="48.6423"/> + <rect x="0" y="474.681" width="65.1969" height="48.6423" class="st5"/> + <text x="9.87" y="503.2" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Subport</text> </g> + <g id="shape233-340" v:mID="233" v:groupContext="shape" transform="translate(284.882,-461.594)"> + <title>Sheet.233</title> + <desc>Port</desc> + <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/> + <v:textRect cx="32.5984" cy="499.003" width="65.2" height="48.6423"/> + <rect x="0" y="474.681" width="65.1969" height="48.6423" class="st5"/> + <text x="20.51" y="503.2" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Port</text> </g> + </g> + </g> +</svg> diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst index a7527b21c..a15970945 100644 --- a/doc/guides/prog_guide/qos_framework.rst +++ b/doc/guides/prog_guide/qos_framework.rst @@ -171,7 +171,7 @@ The functionality of each hierarchical level is detailed in the following table. | | | | token bucket per pipe. | | | | | | +---+--------------------+----------------------------+---------------------------------------------------------------+ - | 4 | Traffic Class (TC) | 4 | #. TCs of the same pipe handled in strict priority order. | + | 4 | Traffic Class (TC) | 13 | #. TCs of the same pipe handled in strict priority order. | | | | | | | | | | #. Upper limit enforced per TC at the pipe level. | | | | | | @@ -183,8 +183,13 @@ The functionality of each hierarchical level is detailed in the following table. | | | | adjusted value that is shared by all the subport pipes. | | | | | | +---+--------------------+----------------------------+---------------------------------------------------------------+ - | 5 | Queue | 4 | #. Queues of the same TC are serviced using Weighted Round | - | | | | Robin (WRR) according to predefined weights. | + | 5 | Queue | High priority TCs: 1, | #. All the high priority TCs (TC0, TC1, ...,TC11) have | + | | | Lowest priority TC: 4 | exactly 1 queue, while the lowest priority TC (TC12), | + | | | | called Best Effort (BE), has 4 queues. | + | | | | | + | | | | #. Queues of the lowest priority TC (BE) are serviced using | + | | | | Weighted Round Robin (WRR) according to predefined weights| + | | | | weights. | | | | | | +---+--------------------+----------------------------+---------------------------------------------------------------+ @@ -730,10 +735,10 @@ Implementation of Strict Priority Scheduling Strict priority scheduling of traffic classes within the same pipe is implemented by the pipe dequeue state machine, which selects the queues in ascending order. -Therefore, queues 0..3 (associated with TC 0, highest priority TC) are handled before -queues 4..7 (TC 1, lower priority than TC 0), -which are handled before queues 8..11 (TC 2), -which are handled before queues 12..15 (TC 3, lowest priority TC). +Therefore, queue 0 (associated with TC 0, highest priority TC) is handled before +queue 1 (TC 1, lower priority than TC 0), +which is handled before queue 2 (TC 2, lower priority than TC 1) and it conitnues until queues of all TCs except the +lowest priority TC are handled. At last, queues 12..15 (best effort TC, lowest priority TC) are handled. Upper Limit Enforcement ''''''''''''''''''''''' @@ -753,14 +758,14 @@ as described in :numref:`table_qos_10` and :numref:`table_qos_11`. | # | Subport or pipe field | Unit | Description | | | | | | +===+=======================+=======+=======================================================================+ - | 1 | tc_time | Bytes | Time of the next update (upper limit refill) for the 4 TCs of the | + | 1 | tc_time | Bytes | Time of the next update (upper limit refill) for the TCs of the | | | | | current subport / pipe. | | | | | | | | | | See Section `Internal Time Reference`_ for the | | | | | explanation of why the time is maintained in byte units. | | | | | | +---+-----------------------+-------+-----------------------------------------------------------------------+ - | 2 | tc_period | Bytes | Time between two consecutive updates for the 4 TCs of the current | + | 2 | tc_period | Bytes | Time between two consecutive updates for the all TCs of the current | | | | | subport / pipe. This is expected to be many times bigger than the | | | | | typical value of the token bucket tb_period. | | | | | | @@ -815,7 +820,7 @@ as described in :numref:`table_qos_10` and :numref:`table_qos_11`. Weighted Round Robin (WRR) """""""""""""""""""""""""" -The evolution of the WRR design solution from simple to complex is shown in :numref:`table_qos_12`. +The evolution of the WRR design solution for the lowest priority traffic class (best effort TC) from simple to complex is shown in :numref:`table_qos_12`. .. _table_qos_12: @@ -977,33 +982,33 @@ with the third approach selected for implementation. | | | | +-----+---------------------------+-------------------------------------------------------------------------+ -Typically, the subport TC oversubscription feature is enabled only for the lowest priority traffic class (TC 3), +Typically, the subport TC oversubscription feature is enabled only for the lowest priority traffic class, which is typically used for best effort traffic, with the management plane preventing this condition from occurring for the other (higher priority) traffic classes. -To ease implementation, it is also assumed that the upper limit for subport TC 3 is set to 100% of the subport rate, -and that the upper limit for pipe TC 3 is set to 100% of pipe rate for all subport member pipes. +To ease implementation, it is also assumed that the upper limit for subport best effort TC is set to 100% of the subport rate, +and that the upper limit for pipe best effort TC is set to 100% of pipe rate for all subport member pipes. Implementation Overview ''''''''''''''''''''''' The algorithm computes a watermark, which is periodically updated based on the current demand experienced by the subport member pipes, -whose purpose is to limit the amount of traffic that each pipe is allowed to send for TC 3. +whose purpose is to limit the amount of traffic that each pipe is allowed to send for best effort TC. The watermark is computed at the subport level at the beginning of each traffic class upper limit enforcement period and the same value is used by all the subport member pipes throughout the current enforcement period. illustrates how the watermark computed as subport level at the beginning of each period is propagated to all subport member pipes. At the beginning of the current enforcement period (which coincides with the end of the previous enforcement period), -the value of the watermark is adjusted based on the amount of bandwidth allocated to TC 3 at the beginning of the previous period that +the value of the watermark is adjusted based on the amount of bandwidth allocated to best effort TC at the beginning of the previous period that was not left unused by the subport member pipes at the end of the previous period. -If there was subport TC 3 bandwidth left unused, +If there was subport best effort TC bandwidth left unused, the value of the watermark for the current period is increased to encourage the subport member pipes to consume more bandwidth. -Otherwise, the value of the watermark is decreased to enforce equality of bandwidth consumption among subport member pipes for TC 3. +Otherwise, the value of the watermark is decreased to enforce equality of bandwidth consumption among subport member pipes for best effort TC. The increase or decrease in the watermark value is done in small increments, so several enforcement periods might be required to reach the equilibrium state. -This state can change at any moment due to variations in the demand experienced by the subport member pipes for TC 3, for example, +This state can change at any moment due to variations in the demand experienced by the subport member pipes for best effort TC, for example, as a result of demand increase (when the watermark needs to be lowered) or demand decrease (when the watermark needs to be increased). When demand is low, the watermark is set high to prevent it from impeding the subport member pipes from consuming more bandwidth. @@ -1084,10 +1089,27 @@ The highest value for the watermark is picked as the highest rate configured for | | | | | | | tc3_cons = subport_tc3_credits_per_period - subport_tc3_credits; | | | | | - | | | tc3_cons_max = subport_tc3_credits_per_period - (tc0_cons + tc1_cons + | - | | | tc2_cons); | + | | | tc4_cons = subport_tc4_credits_per_period - subport_tc4_credits; | + | | | | + | | | tc5_cons = subport_tc5_credits_per_period - subport_tc5_credits; | + | | | | + | | | tc6_cons = subport_tc6_credits_per_period - subport_tc6_credits; | + | | | | + | | | tc7_cons = subport_tc7_credits_per_period - subport_tc7_credits; | + | | | | + | | | tc8_cons = subport_tc8_credits_per_period - subport_tc8_credits; | | | | | - | | | if(tc3_consumption > (tc3_consumption_max - MTU)){ | + | | | tc9_cons = subport_tc9_credits_per_period - subport_tc9_credits; | + | | | | + | | | tc10_cons = subport_tc10_credits_per_period - subport_tc10_credits; | + | | | | + | | | tc11_cons = subport_tc11_credits_per_period - subport_tc11_credits; | + | | | | + | | | tc_be_cons_max = subport_tc_be_credits_per_period - (tc0_cons + tc1_cons + | + | | | tc2_cons + tc3_cons + tc4_cons + tc5_cons + tc6_cons + tc7_cons + tc8_cons + | + | | | tc9_cons + tc10_cons + tc11_cons); | + | | | | + | | | if(tc_be_consumption > (tc_be_consumption_max - MTU)){ | | | | | | | | wm -= wm >> 7; | | | | | @@ -1555,6 +1577,52 @@ A sample RED configuration is shown below. In this example, the queue size is 64 tc 3 wred inv prob = 10 10 10 tc 3 wred weight = 9 9 9 + tc 4 wred min = 28 22 16 + tc 4 wred max = 32 32 32 + tc 4 wred inv prob = 10 10 10 + tc 4 wred weight = 9 9 9 + + tc 5 wred min = 28 22 16 + tc 5 wred max = 32 32 32 + tc 5 wred inv prob = 10 10 10 + tc 5 wred weight = 9 9 9 + + tc 6 wred min = 28 22 16 + tc 6 wred max = 32 32 32 + tc 6 wred inv prob = 10 10 10 + tc 6 wred weight = 9 9 9 + + tc 7 wred min = 28 22 16 + tc 7 wred max = 32 32 32 + tc 7 wred inv prob = 10 10 10 + tc 7 wred weight = 9 9 9 + + tc 8 wred min = 28 22 16 + tc 8 wred max = 32 32 32 + tc 8 wred inv prob = 10 10 10 + tc 8 wred weight = 9 9 9 + + tc 9 wred min = 28 22 16 + tc 9 wred max = 32 32 32 + tc 9 wred inv prob = 10 10 10 + tc 9 wred weight = 9 9 9 + + + tc 10 wred min = 28 22 16 + tc 10 wred max = 32 32 32 + tc 10 wred inv prob = 10 10 10 + tc 10 wred weight = 9 9 9 + + tc 11 wred min = 28 22 16 + tc 11 wred max = 32 32 32 + tc 11 wred inv prob = 10 10 10 + tc 11 wred weight = 9 9 9 + + tc 12 wred min = 28 22 16 + tc 12 wred max = 32 32 32 + tc 12 wred inv prob = 10 10 10 + tc 12 wred weight = 9 9 9 + With this configuration file, the RED configuration that applies to green, yellow and red packets in traffic class 0 is shown in :numref:`table_qos_18`. -- 2.21.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v2 2/3] examples/qos_sched: documentation update 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 " Jasvinder Singh @ 2019-11-26 14:28 ` Jasvinder Singh 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 3/3] examples/ip_pipeline: " Jasvinder Singh 2019-11-26 15:22 ` [dpdk-dev] [PATCH v2 1/3] sched: " Thomas Monjalon 2 siblings, 0 replies; 13+ messages in thread From: Jasvinder Singh @ 2019-11-26 14:28 UTC (permalink / raw) To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic, thomas Update documentation according to the changes made to qos sample app. Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> --- doc/guides/sample_app_ug/qos_scheduler.rst | 92 +++++++++++++++++++--- 1 file changed, 81 insertions(+), 11 deletions(-) diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst index cdd29d90c..b5010657a 100644 --- a/doc/guides/sample_app_ug/qos_scheduler.rst +++ b/doc/guides/sample_app_ug/qos_scheduler.rst @@ -22,7 +22,7 @@ There are two flavors of the runtime execution for this application, with two or three threads per each packet flow configuration being used. The RX thread reads packets from the RX port, classifies the packets based on the double VLAN (outer and inner) and -the lower two bytes of the IP destination address and puts them into the ring queue. +the lower byte of the IP destination address and puts them into the ring queue. The worker thread dequeues the packets from the ring and calls the QoS scheduler enqueue/dequeue functions. If a separate TX core is used, these are sent to the TX ring. Otherwise, they are sent directly to the TX port. @@ -129,18 +129,28 @@ The profile file has the following format: frame overhead = 24 number of subports per port = 1 - number of pipes per subport = 4096 - queue sizes = 64 64 64 64 ; Subport configuration [subport 0] + number of pipes per subport = 4096 + queue sizes = 64 64 64 64 64 64 64 64 64 64 64 64 64 tb rate = 1250000000; Bytes per second tb size = 1000000; Bytes tc 0 rate = 1250000000; Bytes per second tc 1 rate = 1250000000; Bytes per second tc 2 rate = 1250000000; Bytes per second tc 3 rate = 1250000000; Bytes per second + tc 4 rate = 1250000000; Bytes per second + tc 5 rate = 1250000000; Bytes per second + tc 6 rate = 1250000000; Bytes per second + tc 7 rate = 1250000000; Bytes per second + tc 8 rate = 1250000000; Bytes per second + tc 9 rate = 1250000000; Bytes per second + tc 10 rate = 1250000000; Bytes per second + tc 11 rate = 1250000000; Bytes per second + tc 12 rate = 1250000000; Bytes per second + tc period = 10; Milliseconds tc oversubscription period = 10; Milliseconds @@ -156,17 +166,32 @@ The profile file has the following format: tc 1 rate = 305175; Bytes per second tc 2 rate = 305175; Bytes per second tc 3 rate = 305175; Bytes per second + tc 4 rate = 305175; Bytes per second + tc 5 rate = 305175; Bytes per second + tc 6 rate = 305175; Bytes per second + tc 7 rate = 305175; Bytes per second + tc 8 rate = 305175; Bytes per second + tc 9 rate = 305175; Bytes per second + tc 10 rate = 305175; Bytes per second + tc 11 rate = 305175; Bytes per second + tc 12 rate = 305175; Bytes per second tc period = 40; Milliseconds tc 0 oversubscription weight = 1 tc 1 oversubscription weight = 1 tc 2 oversubscription weight = 1 tc 3 oversubscription weight = 1 - - tc 0 wrr weights = 1 1 1 1 - tc 1 wrr weights = 1 1 1 1 - tc 2 wrr weights = 1 1 1 1 - tc 3 wrr weights = 1 1 1 1 + tc 4 oversubscription weight = 1 + tc 5 oversubscription weight = 1 + tc 6 oversubscription weight = 1 + tc 7 oversubscription weight = 1 + tc 8 oversubscription weight = 1 + tc 9 oversubscription weight = 1 + tc 10 oversubscription weight = 1 + tc 11 oversubscription weight = 1 + tc 12 oversubscription weight = 1 + + tc 12 wrr weights = 1 1 1 1 ; RED params per traffic class and color (Green / Yellow / Red) @@ -191,6 +216,51 @@ The profile file has the following format: tc 3 wred inv prob = 10 10 10 tc 3 wred weight = 9 9 9 + tc 4 wred min = 48 40 32 + tc 4 wred max = 64 64 64 + tc 4 wred inv prob = 10 10 10 + tc 4 wred weight = 9 9 9 + + tc 5 wred min = 48 40 32 + tc 5 wred max = 64 64 64 + tc 5 wred inv prob = 10 10 10 + tc 5 wred weight = 9 9 9 + + tc 6 wred min = 48 40 32 + tc 6 wred max = 64 64 64 + tc 6 wred inv prob = 10 10 10 + tc 6 wred weight = 9 9 9 + + tc 7 wred min = 48 40 32 + tc 7 wred max = 64 64 64 + tc 7 wred inv prob = 10 10 10 + tc 7 wred weight = 9 9 9 + + tc 8 wred min = 48 40 32 + tc 8 wred max = 64 64 64 + tc 8 wred inv prob = 10 10 10 + tc 8 wred weight = 9 9 9 + + tc 9 wred min = 48 40 32 + tc 9 wred max = 64 64 64 + tc 9 wred inv prob = 10 10 10 + tc 9 wred weight = 9 9 9 + + tc 10 wred min = 48 40 32 + tc 10 wred max = 64 64 64 + tc 10 wred inv prob = 10 10 10 + tc 10 wred weight = 9 9 9 + + tc 11 wred min = 48 40 32 + tc 11 wred max = 64 64 64 + tc 11 wred inv prob = 10 10 10 + tc 11 wred weight = 9 9 9 + + tc 12 wred min = 48 40 32 + tc 12 wred max = 64 64 64 + tc 12 wred inv prob = 10 10 10 + tc 12 wred weight = 9 9 9 + Interactive mode ~~~~~~~~~~~~~~~~ @@ -295,11 +365,11 @@ This application classifies based on the QinQ double VLAN tags and the IP destin | Pipe | Config (4k) | Traffic shaped (token bucket) | Inner VLAN tag | | | | | | +----------------+-------------------------+--------------------------------------------------+----------------------------------+ - | Traffic Class | 4 | TCs of the same pipe services in strict priority | Destination IP address (0.0.X.0) | + | Traffic Class | 13 | TCs of the same pipe services in strict priority | Destination IP address (0.0.0.X) | | | | | | +----------------+-------------------------+--------------------------------------------------+----------------------------------+ - | Queue | 4 | Queue of the same TC serviced in WRR | Destination IP address (0.0.0.X) | - | | | | | + | Queue | High Priority TC: 1, | Queue of lowest priority traffic | Destination IP address (0.0.0.X) | + | | Lowest Priority TC: 4 | class (Best effort) serviced in WRR | | +----------------+-------------------------+--------------------------------------------------+----------------------------------+ Please refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information about these parameters. -- 2.21.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v2 3/3] examples/ip_pipeline: documentation update 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 " Jasvinder Singh 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 2/3] examples/qos_sched: " Jasvinder Singh @ 2019-11-26 14:28 ` Jasvinder Singh 2019-11-26 15:22 ` [dpdk-dev] [PATCH v2 1/3] sched: " Thomas Monjalon 2 siblings, 0 replies; 13+ messages in thread From: Jasvinder Singh @ 2019-11-26 14:28 UTC (permalink / raw) To: dev; +Cc: cristian.dumitrescu, john.mcnamara, marko.kovacevic, thomas Updates documentation for traffic manager cli as per the changes made to qos scheduler library. Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> --- doc/guides/sample_app_ug/ip_pipeline.rst | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/doc/guides/sample_app_ug/ip_pipeline.rst b/doc/guides/sample_app_ug/ip_pipeline.rst index 4da0fcf89..56014be17 100644 --- a/doc/guides/sample_app_ug/ip_pipeline.rst +++ b/doc/guides/sample_app_ug/ip_pipeline.rst @@ -249,27 +249,35 @@ Traffic manager tmgr subport profile <tb_rate> <tb_size> - <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> + <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate> + <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate> + <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate> <tc_period> - + pps <n_pipes_per_subport> + qsize <qsize_tc0> <qsize_tc1> <qsize_tc2> + <qsize_tc3> <qsize_tc4> <qsize_tc5> <qsize_tc6> + <qsize_tc7> <qsize_tc8> <qsize_tc9> <qsize_tc10> + <qsize_tc11> <qsize_tc12> Add traffic manager pipe profile :: tmgr pipe profile <tb_rate> <tb_size> - <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> + <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate> + <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate> + <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate> <tc_period> - <tc_ov_weight> <wrr_weight0..15> + <tc_ov_weight> + <wrr_weight0..3> Create traffic manager port :: tmgr <tmgr_name> rate <rate> spp <n_subports_per_port> - pps <n_pipes_per_subport> - qsize <qsize_tc0> - <qsize_tc1> <qsize_tc2> <qsize_tc3> - fo <frame_overhead> mtu <mtu> cpu <cpu_id> + fo <frame_overhead> + mtu <mtu> + cpu <cpu_id> Configure traffic manager subport :: -- 2.21.0 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v2 1/3] sched: documentation update 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 " Jasvinder Singh 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 2/3] examples/qos_sched: " Jasvinder Singh 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 3/3] examples/ip_pipeline: " Jasvinder Singh @ 2019-11-26 15:22 ` Thomas Monjalon 2 siblings, 0 replies; 13+ messages in thread From: Thomas Monjalon @ 2019-11-26 15:22 UTC (permalink / raw) To: Jasvinder Singh; +Cc: dev, cristian.dumitrescu, john.mcnamara, marko.kovacevic 26/11/2019 15:28, Jasvinder Singh: > Updates documentation to reflect the changes in the qos scheduler > library. > > Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> > Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com> Applied, thanks ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2019-11-26 15:22 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-10-29 13:19 [dpdk-dev] [PATCH 1/3] sched: documentation update Jasvinder Singh 2019-10-29 13:19 ` [dpdk-dev] [PATCH 2/3] examples/qos_sched: " Jasvinder Singh 2019-11-04 10:29 ` Dumitrescu, Cristian 2019-10-29 13:19 ` [dpdk-dev] [PATCH 3/3] examples/ip_pipeline: " Jasvinder Singh 2019-11-04 10:29 ` Dumitrescu, Cristian 2019-11-04 10:30 ` [dpdk-dev] [PATCH 1/3] sched: " Dumitrescu, Cristian 2019-11-26 8:47 ` Thomas Monjalon 2019-11-26 9:16 ` Thomas Monjalon 2019-11-26 9:55 ` Singh, Jasvinder 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 " Jasvinder Singh 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 2/3] examples/qos_sched: " Jasvinder Singh 2019-11-26 14:28 ` [dpdk-dev] [PATCH v2 3/3] examples/ip_pipeline: " Jasvinder Singh 2019-11-26 15:22 ` [dpdk-dev] [PATCH v2 1/3] sched: " Thomas Monjalon
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).