From: Jasvinder Singh <jasvinder.singh@intel.com>
To: dev@dpdk.org
Cc: cristian.dumitrescu@intel.com, john.mcnamara@intel.com,
marko.kovacevic@intel.com, thomas@monjalon.net
Subject: [dpdk-dev] [PATCH v2 1/3] sched: documentation update
Date: Tue, 26 Nov 2019 14:28:29 +0000 [thread overview]
Message-ID: <20191126142831.55017-1-jasvinder.singh@intel.com> (raw)
In-Reply-To: <20191029131942.50298-1-jasvinder.singh@intel.com>
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
next prev parent reply other threads:[~2019-11-26 13:28 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-29 13:19 [dpdk-dev] [PATCH " 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 ` Jasvinder Singh [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191126142831.55017-1-jasvinder.singh@intel.com \
--to=jasvinder.singh@intel.com \
--cc=cristian.dumitrescu@intel.com \
--cc=dev@dpdk.org \
--cc=john.mcnamara@intel.com \
--cc=marko.kovacevic@intel.com \
--cc=thomas@monjalon.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).