Review and re-work of vm_power_manager documentation.
Hopefully this is clearer, easier to follow.
Signed-off-by: David Hunt <david.hunt@intel.com>
<?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 vm_power_mgr_highlevel.svg Page-1 -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!-- SPDX-License-Identifier: BSD-3-Clause -->
-<!-- Copyright(c) 2014 Intel Corporation -->
-<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"
- width="7.96928in" height="6.37479in" viewBox="0 0 573.788 458.985" xml:space="preserve" color-interpolation-filters="sRGB"
- class="st28">
- <style type="text/css">
- <![CDATA[
- .st1 {visibility:visible}
- .st2 {fill:#464646;fill-opacity:0.5;stroke:#464646;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.5}
- .st3 {fill:url(#grad0-6);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st4 {fill:#000000;font-family:Calibri;font-size:1.00001em;font-weight:bold}
- .st5 {fill:#464646;fill-opacity:0.5}
- .st6 {stroke:#464646;stroke-linecap:butt;stroke-opacity:0.5;stroke-width:0.25}
- .st7 {fill:url(#grad0-15)}
- .st8 {stroke:#1f497d;stroke-linecap:butt;stroke-width:0.25}
- .st9 {fill:#464646;fill-opacity:0.5;stroke:#464646;stroke-linecap:butt;stroke-opacity:0.5;visibility:hidden}
- .st10 {fill:url(#grad0-15);stroke:#1f497d;stroke-linecap:butt;stroke-width:0.25;visibility:hidden}
- .st11 {fill:#000000;font-family:Arial;font-size:0.666664em;font-weight:bold}
- .st12 {fill:url(#grad0-15);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st13 {fill:#000000;font-family:Arial;font-size:0.666664em}
- .st14 {font-size:1em}
- .st15 {fill:url(#grad0-196);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st16 {fill:url(#grad0-229);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st17 {font-family:Symbol;font-size:1em;font-weight:normal}
- .st18 {font-size:1em;font-weight:normal}
- .st19 {fill:url(#grad0-282);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st20 {fill:url(#grad0-344);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st21 {fill:url(#grad0-357);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st22 {fill:url(#grad0-418);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st23 {fill:url(#grad0-431);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}
- .st24 {marker-end:url(#mrkr5-440);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
- .st25 {fill:#1f497d;fill-opacity:1;stroke:#1f497d;stroke-opacity:1;stroke-width:0.28409090909091}
- .st26 {marker-end:url(#mrkr5-440);marker-start:url(#mrkr5-460);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}
- .st27 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2}
- .st28 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
- ]]>
- </style>
+<!-- Copyright(c) 2014 Intel Corporation -->
- <defs id="Patterns_And_Gradients">
- <linearGradient id="grad0-6" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#bdd194" stop-opacity="1"/>
- <stop offset="1" stop-color="#a5c06b" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-15" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#b6c8de" stop-opacity="1"/>
- <stop offset="1" stop-color="#9ab3d1" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-196" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#e9f4f8" stop-opacity="1"/>
- <stop offset="1" stop-color="#e1f1f5" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-229" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
- <stop offset="1" stop-color="#ffffff" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-282" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#dc9e9c" stop-opacity="1"/>
- <stop offset="1" stop-color="#ce7977" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-344" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#b6cc88" stop-opacity="1"/>
- <stop offset="1" stop-color="#a5c06b" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-357" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#fab781" stop-opacity="1"/>
- <stop offset="1" stop-color="#f89c52" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-418" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#acc8ea" stop-opacity="1"/>
- <stop offset="1" stop-color="#8db3e2" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-431" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#e2e2e2" stop-opacity="1"/>
- <stop offset="1" stop-color="#d8d8d8" stop-opacity="1"/>
- </linearGradient>
- <linearGradient id="grad0-437" x1="0" y1="0" x2="1" y2="0" gradientTransform="rotate(90 0.5 0.5)">
- <stop offset="0" stop-color="#c4d2e3" stop-opacity="1"/>
- <stop offset="1" stop-color="#9ab3d1" stop-opacity="1"/>
- </linearGradient>
- </defs>
- <defs id="Markers">
- <g id="lend5">
- <path d="M 2 1 L 0 0 L 1.98117 -0.993387 C 1.67173 -0.364515 1.67301 0.372641 1.98465 1.00043 " style="stroke:none"/>
- </g>
- <marker id="mrkr5-440" class="st25" refX="-6.16" orient="auto" markerUnits="strokeWidth" overflow="visible">
- <use xlink:href="#lend5" transform="scale(-3.52,-3.52) "/>
- </marker>
- <marker id="mrkr5-460" class="st25" refX="5.8" orient="auto" markerUnits="strokeWidth" overflow="visible">
- <use xlink:href="#lend5" transform="scale(3.52) "/>
- </marker>
- </defs>
- <g>
- <title>Page-1</title>
- <g id="shape1-1" transform="translate(18.3,-19.74)">
- <title>Box</title>
- <desc>Host</desc>
- <g id="shadow1-2" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="239.3" width="405.354" height="219.685" class="st2"/>
- </g>
- <rect x="0" y="239.3" width="405.354" height="219.685" class="st3"/>
- <text x="191.19" y="451.39" class="st4">Host</text> </g>
- <g id="group59-8" transform="translate(585.399,54.9035) rotate(76.5904)">
- <title>1-D single.59</title>
- <g id="shape63-9">
- <title>Sheet.63</title>
- <g id="shadow63-10" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48
- L0 456.15 Z" class="st5"/>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48"
- class="st6"/>
- </g>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48 L0 456.15
- Z" class="st7"/>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48" class="st8"/>
- </g>
- <g id="shape64-17">
- <title>Sheet.64</title>
- <g id="shadow64-18" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <path d="M2.83 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st6"/>
- </g>
- <path d="M2.83 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st8"/>
- </g>
- <g id="shape65-24" transform="translate(-2.82107,-2.88265)">
- <title>Sheet.65</title>
- <g id="shadow65-25" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <rect x="0" y="453.412" width="1.24186" height="5.57329" rx="0.620928" ry="0.620928" class="st9"/>
- </g>
- <rect x="0" y="453.412" width="1.24186" height="5.57329" rx="0.620928" ry="0.620928" class="st10"/>
- </g>
- </g>
- <g id="group54-29" transform="translate(656.289,-75.8304) rotate(58.6472)">
- <title>1-D single.54</title>
- <g id="shape56-30">
- <title>Sheet.56</title>
- <g id="shadow56-31" transform="matrix(1,0,0,1,1.97897,-0.480491)" class="st1">
- <path d="M0 456.15 L246.36 456.15 A1.41732 1.41732 0 0 1 247.78 457.57 L247.78 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L249.19 456.15 A6.33846 6.33846 -180 0 0 249.19 450.48 L248.41 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L247.78 449.06 A1.41732 1.41732 0 0 1 246.36 450.48 L0 450.48
- L0 456.15 Z" class="st5"/>
- <path d="M0 456.15 L246.36 456.15 A1.41732 1.41732 0 0 1 247.78 457.57 L247.78 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L249.19 456.15 A6.33846 6.33846 -180 0 0 249.19 450.48 L248.41 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L247.78 449.06 A1.41732 1.41732 0 0 1 246.36 450.48 L0 450.48"
- class="st6"/>
- </g>
- <path d="M0 456.15 L246.36 456.15 A1.41732 1.41732 0 0 1 247.78 457.57 L247.78 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L249.19 456.15 A6.33846 6.33846 -180 0 0 249.19 450.48 L248.41 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L247.78 449.06 A1.41732 1.41732 0 0 1 246.36 450.48 L0 450.48 L0 456.15
- Z" class="st7"/>
- <path d="M0 456.15 L246.36 456.15 A1.41732 1.41732 0 0 1 247.78 457.57 L247.78 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L249.19 456.15 A6.33846 6.33846 -180 0 0 249.19 450.48 L248.41 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L247.78 449.06 A1.41732 1.41732 0 0 1 246.36 450.48 L0 450.48" class="st8"/>
- </g>
- <g id="shape57-37">
- <title>Sheet.57</title>
- <g id="shadow57-38" transform="matrix(1,0,0,1,1.97897,-0.480491)" class="st1">
- <path d="M2.83 456.15 L246.36 456.15 A1.41732 1.41732 0 0 1 247.78 457.57 L247.78 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L249.19 456.15 A6.33846 6.33846 -180 0 0 249.19 450.48 L248.41 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L247.78 449.06 A1.41732 1.41732 0 0 1 246.36 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st6"/>
- </g>
- <path d="M2.83 456.15 L246.36 456.15 A1.41732 1.41732 0 0 1 247.78 457.57 L247.78 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L249.19 456.15 A6.33846 6.33846 -180 0 0 249.19 450.48 L248.41 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L247.78 449.06 A1.41732 1.41732 0 0 1 246.36 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st8"/>
- </g>
- <g id="shape58-44" transform="translate(-3.21337,-2.88265)">
- <title>Sheet.58</title>
- <g id="shadow58-45" transform="matrix(1,0,0,1,1.97897,-0.480491)" class="st1">
- <rect x="0" y="453.412" width="1.41455" height="5.57329" rx="0.707276" ry="0.707276" class="st9"/>
- </g>
- <rect x="0" y="453.412" width="1.41455" height="5.57329" rx="0.707276" ry="0.707276" class="st10"/>
- </g>
- </g>
- <g id="shape10-49" transform="translate(18.3,-298.953)">
- <title>Box.10</title>
- <desc>VM 0</desc>
- <g id="shadow10-50" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="317.253" width="201.26" height="141.732" class="st2"/>
- </g>
- <rect x="0" y="317.253" width="201.26" height="141.732" class="st3"/>
- <text x="91.29" y="414.52" class="st11">VM 0</text> </g>
- <g id="shape2-55" transform="translate(18.3,-48.7951)">
- <title>Box.2</title>
- <desc>Core 0</desc>
- <g id="shadow2-56" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 0</text> </g>
- <g id="shape3-61" transform="translate(69.3236,-48.7951)">
- <title>Box.3</title>
- <desc>Core 1</desc>
- <g id="shadow3-62" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 1</text> </g>
- <g id="shape4-67" transform="translate(120.347,-48.7951)">
- <title>Box.4</title>
- <desc>Core 2</desc>
- <g id="shadow4-68" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 2</text> </g>
- <g id="shape5-73" transform="translate(171.371,-48.7951)">
- <title>Box.5</title>
- <desc>Core 3</desc>
- <g id="shadow5-74" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 3</text> </g>
- <g id="shape6-79" transform="translate(222.394,-48.7951)">
- <title>Box.6</title>
- <desc>Core 4</desc>
- <g id="shadow6-80" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 4</text> </g>
- <g id="shape7-85" transform="translate(273.418,-48.7951)">
- <title>Box.7</title>
- <desc>Core 5</desc>
- <g id="shadow7-86" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 5</text> </g>
- <g id="shape8-91" transform="translate(324.442,-48.7951)">
- <title>Box.8</title>
- <desc>Core 6</desc>
- <g id="shadow8-92" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 6</text> </g>
- <g id="shape9-97" transform="translate(375.465,-48.7951)">
- <title>Box.9</title>
- <desc>Core 7</desc>
- <g id="shadow9-98" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.09" y="443.31" class="st13">Core 7</text> </g>
- <g id="shape11-103" transform="translate(18.3,-298.953)">
- <title>Box.11</title>
- <desc>Virtual Core 0</desc>
- <g id="shadow11-104" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.76" y="438.51" class="st13">Virtual <tspan x="12.09" dy="1.2em" class="st14">Core </tspan>0</text> </g>
- <g id="shape12-110" transform="translate(69.3236,-298.953)">
- <title>Box.12</title>
- <desc>Virtual Core 1</desc>
- <g id="shadow12-111" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.76" y="438.51" class="st13">Virtual <tspan x="12.09" dy="1.2em" class="st14">Core </tspan>1</text> </g>
- <g id="shape13-117" transform="translate(120.347,-298.953)">
- <title>Box.13</title>
- <desc>Virtual Core 2</desc>
- <g id="shadow13-118" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.76" y="438.51" class="st13">Virtual <tspan x="12.09" dy="1.2em" class="st14">Core </tspan>2</text> </g>
- <g id="shape14-124" transform="translate(171.371,-298.953)">
- <title>Box.14</title>
- <desc>Virtual Core 3</desc>
- <g id="shadow14-125" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.76" y="438.51" class="st13">Virtual <tspan x="12.09" dy="1.2em" class="st14">Core </tspan>3</text> </g>
- <g id="group16-131" transform="translate(333.737,-187.264) rotate(39.9929)">
- <title>1-D single</title>
- <g id="shape17-132">
- <title>Sheet.17</title>
- <g id="shadow17-133" transform="matrix(1,0,0,1,2.0287,0.177741)" class="st1">
- <path d="M0 456.15 L328.75 456.15 A1.41732 1.41732 0 0 1 330.16 457.57 L330.16 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L331.58 456.15 A6.33846 6.33846 -180 0 0 331.58 450.48 L330.8 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L330.16 449.06 A1.41732 1.41732 0 0 1 328.75 450.48 L0 450.48
- L0 456.15 Z" class="st5"/>
- <path d="M0 456.15 L328.75 456.15 A1.41732 1.41732 0 0 1 330.16 457.57 L330.16 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L331.58 456.15 A6.33846 6.33846 -180 0 0 331.58 450.48 L330.8 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L330.16 449.06 A1.41732 1.41732 0 0 1 328.75 450.48 L0 450.48"
- class="st6"/>
- </g>
- <path d="M0 456.15 L328.75 456.15 A1.41732 1.41732 0 0 1 330.16 457.57 L330.16 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L331.58 456.15 A6.33846 6.33846 -180 0 0 331.58 450.48 L330.8 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L330.16 449.06 A1.41732 1.41732 0 0 1 328.75 450.48 L0 450.48 L0 456.15
- Z" class="st7"/>
- <path d="M0 456.15 L328.75 456.15 A1.41732 1.41732 0 0 1 330.16 457.57 L330.16 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L331.58 456.15 A6.33846 6.33846 -180 0 0 331.58 450.48 L330.8 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L330.16 449.06 A1.41732 1.41732 0 0 1 328.75 450.48 L0 450.48" class="st8"/>
- </g>
- <g id="shape18-139">
- <title>Sheet.18</title>
- <g id="shadow18-140" transform="matrix(1,0,0,1,2.0287,0.177741)" class="st1">
- <path d="M2.83 456.15 L328.75 456.15 A1.41732 1.41732 0 0 1 330.16 457.57 L330.16 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L331.58 456.15 A6.33846 6.33846 -180 0 0 331.58 450.48 L330.8 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L330.16 449.06 A1.41732 1.41732 0 0 1 328.75 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st6"/>
- </g>
- <path d="M2.83 456.15 L328.75 456.15 A1.41732 1.41732 0 0 1 330.16 457.57 L330.16 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L331.58 456.15 A6.33846 6.33846 -180 0 0 331.58 450.48 L330.8 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L330.16 449.06 A1.41732 1.41732 0 0 1 328.75 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st8"/>
- </g>
- <g id="shape19-146" transform="translate(-4.26978,-2.88265)">
- <title>Sheet.19</title>
- <g id="shadow19-147" transform="matrix(1,0,0,1,2.0287,0.177741)" class="st1">
- <rect x="0" y="453.412" width="1.87959" height="5.57329" rx="0.939796" ry="0.939796" class="st9"/>
- </g>
- <rect x="0" y="453.412" width="1.87959" height="5.57329" rx="0.939796" ry="0.939796" class="st10"/>
- </g>
- </g>
- <g id="group20-151" transform="translate(534.375,54.9035) rotate(76.5904)">
- <title>1-D single.20</title>
- <g id="shape21-152">
- <title>Sheet.21</title>
- <g id="shadow21-153" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48
- L0 456.15 Z" class="st5"/>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48"
- class="st6"/>
- </g>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48 L0 456.15
- Z" class="st7"/>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48" class="st8"/>
- </g>
- <g id="shape22-159">
- <title>Sheet.22</title>
- <g id="shadow22-160" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <path d="M2.83 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st6"/>
- </g>
- <path d="M2.83 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st8"/>
- </g>
- <g id="shape23-166" transform="translate(-2.82107,-2.88265)">
- <title>Sheet.23</title>
- <g id="shadow23-167" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <rect x="0" y="453.412" width="1.24186" height="5.57329" rx="0.620928" ry="0.620928" class="st9"/>
- </g>
- <rect x="0" y="453.412" width="1.24186" height="5.57329" rx="0.620928" ry="0.620928" class="st10"/>
- </g>
- </g>
- <g id="group28-171" transform="translate(636.422,54.9035) rotate(76.5904)">
- <title>1-D single.28</title>
- <g id="shape29-172">
- <title>Sheet.29</title>
- <g id="shadow29-173" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48
- L0 456.15 Z" class="st5"/>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48"
- class="st6"/>
- </g>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48 L0 456.15
- Z" class="st7"/>
- <path d="M0 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L0 450.48" class="st8"/>
- </g>
- <g id="shape30-179">
- <title>Sheet.30</title>
- <g id="shadow30-180" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <path d="M2.83 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st6"/>
- </g>
- <path d="M2.83 456.15 L215.76 456.15 A1.41732 1.41732 0 0 1 217.18 457.57 L217.18 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L218.6 456.15 A6.33846 6.33846 -180 0 0 218.6 450.48 L217.81 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L217.18 449.06 A1.41732 1.41732 0 0 1 215.76 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st8"/>
- </g>
- <g id="shape31-186" transform="translate(-2.82107,-2.88265)">
- <title>Sheet.31</title>
- <g id="shadow31-187" transform="matrix(1,0,0,1,1.73469,-1.06679)" class="st1">
- <rect x="0" y="453.412" width="1.24186" height="5.57329" rx="0.620928" ry="0.620928" class="st9"/>
- </g>
- <rect x="0" y="453.412" width="1.24186" height="5.57329" rx="0.620928" ry="0.620928" class="st10"/>
- </g>
- </g>
- <g id="shape32-191" transform="translate(18.3,-417.299)">
- <title>Box.32</title>
- <desc>DPDK Application</desc>
- <g id="shadow32-192" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="435.599" width="201.26" height="23.3858" class="st2"/>
- </g>
- <rect x="0" y="435.599" width="201.26" height="23.3858" class="st15"/>
- <text x="68.84" y="446.8" class="st13">DPDK Application</text> </g>
- <g id="shape33-198" transform="translate(245.072,-298.953)">
- <title>Box.33</title>
- <desc>VM 1</desc>
- <g id="shadow33-199" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="317.253" width="99.2126" height="141.732" class="st2"/>
- </g>
- <rect x="0" y="317.253" width="99.2126" height="141.732" class="st3"/>
- <text x="40.27" y="414.52" class="st11">VM 1</text> </g>
- <g id="shape34-204" transform="translate(245.072,-298.953)">
- <title>Box.34</title>
- <desc>Virtual Core 0</desc>
- <g id="shadow34-205" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.76" y="438.51" class="st13">Virtual <tspan x="12.09" dy="1.2em" class="st14">Core </tspan>0</text> </g>
- <g id="shape35-211" transform="translate(296.095,-298.953)">
- <title>Box.35</title>
- <desc>Virtual Core 1</desc>
- <g id="shadow35-212" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st2"/>
- </g>
- <rect x="0" y="422.843" width="48.189" height="36.1417" class="st12"/>
- <text x="12.76" y="438.51" class="st13">Virtual <tspan x="12.09" dy="1.2em" class="st14">Core </tspan>1</text> </g>
- <g id="shape36-218" transform="translate(245.072,-417.299)">
- <title>Box.36</title>
- <desc>DPDK Application</desc>
- <g id="shadow36-219" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="435.599" width="99.2126" height="23.3858" class="st2"/>
- </g>
- <rect x="0" y="435.599" width="99.2126" height="23.3858" class="st15"/>
- <text x="17.81" y="446.8" class="st13">DPDK Application</text> </g>
- <g id="shape49-224" transform="translate(372.631,-334.488)">
- <title>Box.49</title>
- <desc>DPDK VM Application Reuse librte_power interface, but provide...</desc>
- <g id="shadow49-225" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="352.788" width="175.748" height="106.197" class="st2"/>
- </g>
- <rect x="0" y="352.788" width="175.748" height="106.197" class="st16"/>
- <text x="4" y="363.99" class="st11">DPDK VM Application <tspan x="4" dy="1.212em" class="st17">·</tspan><tspan
- class="st17"> </tspan><tspan class="st18">Reuse </tspan>librte_power<tspan class="st18"> </tspan><tspan
- class="st18">interface</tspan><tspan class="st18">, </tspan><tspan class="st18">but </tspan><tspan x="22"
- dy="1.204em" class="st18">provides a new implementation that </tspan><tspan x="22" dy="1.2em" class="st18">forwards frequency set requests to host </tspan><tspan
- x="22" dy="1.2em" class="st18">via Virtio</tspan><tspan class="st18">-</tspan><tspan class="st18">Serial channel </tspan><tspan
- x="4" dy="1.212em" class="st17">·</tspan><tspan class="st17"> </tspan><tspan class="st18">Each lcore has exclusive access to a </tspan><tspan
- x="22" dy="1.204em" class="st18">single channel </tspan><tspan x="4" dy="1.212em" class="st17">·</tspan><tspan
- class="st17"> </tspan><tspan class="st18">Sample application re</tspan><tspan class="st18">-</tspan><tspan
- class="st18">uses </tspan>l3fwd_power <tspan x="4" dy="1.216em" class="st17">·</tspan><tspan class="st17"> </tspan><tspan
- class="st18">A CLI for changing frequency from within </tspan><tspan x="22" dy="1.204em" class="st18">a VM is also included</tspan><tspan
- class="st18">.</tspan></text> </g>
- <g id="group37-257" transform="translate(769.581,100.51) rotate(82.4551)">
- <title>1-D single.37</title>
- <g id="shape38-258">
- <title>Sheet.38</title>
- <g id="shadow38-259" transform="matrix(1,0,0,1,1.61661,-1.23846)" class="st1">
- <path d="M0 456.15 L211.63 456.15 A1.41732 1.41732 0 0 1 213.05 457.57 L213.05 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L214.47 456.15 A6.33846 6.33846 -180 0 0 214.47 450.48 L213.68 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L213.05 449.06 A1.41732 1.41732 0 0 1 211.63 450.48 L0 450.48
- L0 456.15 Z" class="st5"/>
- <path d="M0 456.15 L211.63 456.15 A1.41732 1.41732 0 0 1 213.05 457.57 L213.05 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L214.47 456.15 A6.33846 6.33846 -180 0 0 214.47 450.48 L213.68 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L213.05 449.06 A1.41732 1.41732 0 0 1 211.63 450.48 L0 450.48"
- class="st6"/>
- </g>
- <path d="M0 456.15 L211.63 456.15 A1.41732 1.41732 0 0 1 213.05 457.57 L213.05 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L214.47 456.15 A6.33846 6.33846 -180 0 0 214.47 450.48 L213.68 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L213.05 449.06 A1.41732 1.41732 0 0 1 211.63 450.48 L0 450.48 L0 456.15
- Z" class="st7"/>
- <path d="M0 456.15 L211.63 456.15 A1.41732 1.41732 0 0 1 213.05 457.57 L213.05 457.57 a0.334585 0.334585 -180 0 0
- 0.633846 0.149631 L214.47 456.15 A6.33846 6.33846 -180 0 0 214.47 450.48 L213.68 448.91 a0.334585 0.334585
- -180 0 0 -0.633846 0.149631 L213.05 449.06 A1.41732 1.41732 0 0 1 211.63 450.48 L0 450.48" class="st8"/>
- </g>
- <g id="shape39-265">
- <title>Sheet.39</title>
- <g id="shadow39-266" transform="matrix(1,0,0,1,1.61661,-1.23846)" class="st1">
- <path d="M2.83 456.15 L211.63 456.15 A1.41732 1.41732 0 0 1 213.05 457.57 L213.05 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L214.47 456.15 A6.33846 6.33846 -180 0 0 214.47 450.48 L213.68 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L213.05 449.06 A1.41732 1.41732 0 0 1 211.63 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st6"/>
- </g>
- <path d="M2.83 456.15 L211.63 456.15 A1.41732 1.41732 0 0 1 213.05 457.57 L213.05 457.57 a0.334585 0.334585 -180
- 0 0 0.633846 0.149631 L214.47 456.15 A6.33846 6.33846 -180 0 0 214.47 450.48 L213.68 448.91 a0.334585
- 0.334585 -180 0 0 -0.633846 0.149631 L213.05 449.06 A1.41732 1.41732 0 0 1 211.63 450.48 L2.83 450.48
- A2.83465 2.83465 -180 0 0 0 453.32 L0 453.32 A2.83465 2.83465 -180 0 0 2.83 456.15" class="st8"/>
- </g>
- <g id="shape40-272" transform="translate(-2.76812,-2.88265)">
- <title>Sheet.40</title>
- <g id="shadow40-273" transform="matrix(1,0,0,1,1.61661,-1.23846)" class="st1">
- <rect x="0" y="453.412" width="1.21855" height="5.57329" rx="0.609275" ry="0.609275" class="st9"/>
- </g>
- <rect x="0" y="453.412" width="1.21855" height="5.57329" rx="0.609275" ry="0.609275" class="st10"/>
- </g>
- </g>
- <g id="shape15-277" transform="translate(18.3,-99.8187)">
- <title>Box.15</title>
- <desc>OS/Hypervisor</desc>
- <g id="shadow15-278" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="319.379" width="405.354" height="139.606" class="st2"/>
- </g>
- <rect x="0" y="319.379" width="405.354" height="139.606" class="st19"/>
- <text x="174.89" y="452.58" class="st11">OS/Hypervisor</text> </g>
- <g id="shape55-284" transform="translate(237.985,-159.346)">
- <title>Box.55</title>
- <desc>Linux “userspace” power governor /sys/devices/system/cpu/cpuN...</desc>
- <g id="shadow55-285" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="430.638" width="167.244" height="28.3465" class="st2"/>
- </g>
- <rect x="0" y="430.638" width="167.244" height="28.3465" class="st19"/>
- <text x="16.72" y="441.84" class="st11">Linux “userspace” power governor <tspan x="8.93" dy="1.2em" class="st14">/</tspan>sys/devices/system/cpu/cpuN/cpufreq/</text> </g>
- <g id="shape45-291" transform="translate(429.324,-60.1337)">
- <title>Box.45</title>
- <desc>VM Power Monitor Accepts VM Commands over Virtio Serial endpo...</desc>
- <g id="shadow45-292" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="254.89" width="130.519" height="204.094" class="st2"/>
- </g>
- <rect x="0" y="254.89" width="130.519" height="204.094" class="st16"/>
- <text x="4" y="266.09" class="st11">VM Power Monitor <tspan x="4" dy="1.212em" class="st17">·</tspan><tspan
- class="st17"> </tspan><tspan class="st18">Accepts VM Commands over </tspan><tspan x="22" dy="1.204em"
- class="st18">Virtio Serial endpoints</tspan><tspan class="st18">, </tspan><tspan x="22" dy="1.2em"
- class="st18">monitored via </tspan>epoll <tspan x="4" dy="1.212em" class="st17">·</tspan><tspan
- class="st17"> </tspan><tspan class="st18">Commands include the </tspan><tspan x="22" dy="1.204em"
- class="st18">virtual core to be modified</tspan><tspan class="st18">, </tspan><tspan x="22" dy="1.2em"
- class="st18">using </tspan>libvirt <tspan class="st18">to get physical </tspan><tspan x="22" dy="1.2em"
- class="st18">core mapping </tspan><tspan x="4" dy="1.212em" class="st17">·</tspan><tspan class="st17"> </tspan><tspan
- class="st18">Uses librte</tspan><tspan class="st18">_</tspan><tspan class="st18">power to affect </tspan><tspan
- x="22" dy="1.204em" class="st18">frequency changes via Linux </tspan><tspan x="22" dy="1.2em" class="st18">userspace power </tspan><tspan
- x="22" dy="1.2em" class="st18">governor</tspan><tspan class="st18">(</tspan><tspan class="st18">APCI cpufreq</tspan><tspan
- class="st18">) </tspan><tspan x="4" dy="1.212em" class="st17">·</tspan><tspan class="st17"> </tspan><tspan
- class="st18">CLI</tspan><tspan class="st18">: </tspan><tspan class="st18">For adding VM channels </tspan><tspan
- x="22" dy="1.204em" class="st18">to monitor</tspan><tspan class="st18">, </tspan><tspan class="st18">inspecting and </tspan><tspan
- x="22" dy="1.2em" class="st18">changing channel state</tspan><tspan class="st18">, </tspan><tspan x="22"
- dy="1.2em" class="st18">manually altering CPU </tspan><tspan x="22" dy="1.2em" class="st18">frequency</tspan><tspan
- class="st18">. </tspan><tspan class="st18">Also allows for the </tspan><tspan x="22" dy="1.2em"
- class="st18">changing of vCPU to pCPU </tspan><tspan x="22" dy="1.2em" class="st18">pinning</tspan><tspan
- class="st18">.</tspan></text> </g>
- <g id="shape53-339" transform="translate(26.8039,-116.827)">
- <title>Box.53</title>
- <desc>VM Power Monitor Application</desc>
- <g id="shadow53-340" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="342.41" width="150.236" height="116.575" class="st2"/>
- </g>
- <rect x="0" y="342.41" width="150.236" height="116.575" class="st20"/>
- <text x="17.34" y="452.58" class="st11">VM Power Monitor Application</text> </g>
- <g id="shape61-346" transform="translate(18.3,-396.394)">
- <title>Box.61</title>
- <desc>librte_power(vm)</desc>
- <g id="shadow61-347" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="438.079" width="201.26" height="20.9055" class="st2"/>
- </g>
- <rect x="0" y="438.079" width="201.26" height="20.9055" class="st20"/>
- <text x="70.84" y="450.93" class="st13">librte_power(vm)</text> </g>
- <g id="shape48-352" transform="translate(18.3,-366.275)">
- <title>Box.48</title>
- <desc>lcore channel 0</desc>
- <g id="shadow48-353" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st2"/>
- </g>
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st21"/>
- <text x="11.7" y="436.73" class="st11">lcore <tspan x="6.14" dy="1.2em" class="st14">channel </tspan><tspan x="19.04"
- dy="1.2em" class="st14">0</tspan></text> </g>
- <g id="shape47-361" transform="translate(245.072,-396.394)">
- <title>Box.47</title>
- <desc>librte_power(vm)</desc>
- <g id="shadow47-362" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="438.079" width="99.2126" height="20.9055" class="st2"/>
- </g>
- <rect x="0" y="438.079" width="99.2126" height="20.9055" class="st20"/>
- <text x="19.82" y="450.93" class="st13">librte_power(vm)</text> </g>
- <g id="shape46-367" transform="translate(72.1583,-366.275)">
- <title>Box.46</title>
- <desc>lcore channel 1</desc>
- <g id="shadow46-368" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st2"/>
- </g>
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st21"/>
- <text x="11.7" y="436.73" class="st11">lcore <tspan x="6.14" dy="1.2em" class="st14">channel </tspan><tspan x="19.04"
- dy="1.2em" class="st14">1</tspan></text> </g>
- <g id="shape60-375" transform="translate(126.017,-366.275)">
- <title>Box.60</title>
- <desc>lcore channel 2</desc>
- <g id="shadow60-376" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st2"/>
- </g>
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st21"/>
- <text x="11.7" y="436.73" class="st11">lcore <tspan x="6.14" dy="1.2em" class="st14">channel </tspan><tspan x="19.04"
- dy="1.2em" class="st14">2</tspan></text> </g>
- <g id="shape62-383" transform="translate(177.04,-366.275)">
- <title>Box.62</title>
- <desc>lcore channel 3</desc>
- <g id="shadow62-384" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st2"/>
- </g>
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st21"/>
- <text x="11.7" y="436.73" class="st11">lcore <tspan x="6.14" dy="1.2em" class="st14">channel </tspan><tspan x="19.04"
- dy="1.2em" class="st14">3</tspan></text> </g>
- <g id="shape50-391" transform="translate(245.072,-366.275)">
- <title>Box.50</title>
- <desc>lcore channel 0</desc>
- <g id="shadow50-392" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st2"/>
- </g>
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st21"/>
- <text x="11.7" y="436.73" class="st11">lcore <tspan x="6.14" dy="1.2em" class="st14">channel </tspan><tspan x="19.04"
- dy="1.2em" class="st14">0</tspan></text> </g>
- <g id="shape52-399" transform="translate(301.765,-366.275)">
- <title>Box.52</title>
- <desc>lcore channel 1</desc>
- <g id="shadow52-400" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st2"/>
- </g>
- <rect x="0" y="428.867" width="42.5197" height="30.1181" class="st21"/>
- <text x="11.7" y="436.73" class="st11">lcore <tspan x="6.14" dy="1.2em" class="st14">channel </tspan><tspan x="19.04"
- dy="1.2em" class="st14">1</tspan></text> </g>
- <g id="shape51-407" transform="translate(26.8039,-216.039)">
- <title>Box.51</title>
- <desc>Endpoint Monitor(lcore channels)</desc>
- <g id="shadow51-408" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st2"/>
- </g>
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st21"/>
- <text x="7.09" y="452.82" class="st11">Endpoint Monitor(lcore channels)</text> </g>
- <g id="shape25-413" transform="translate(26.8039,-198.854)">
- <title>Box.25</title>
- <desc>Channel Manager</desc>
- <g id="shadow25-414" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st2"/>
- </g>
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st22"/>
- <text x="37.53" y="452.82" class="st11">Channel Manager</text> </g>
- <g id="shape41-420" transform="translate(247.906,-215.862)">
- <title>Box.41</title>
- <desc>QEMU</desc>
- <g id="shadow41-421" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st2"/>
- </g>
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st21"/>
- <text x="58.87" y="452.82" class="st11">QEMU</text> </g>
- <g id="shape42-426" transform="translate(247.906,-198.854)">
- <title>Box.42</title>
- <desc>libvirt</desc>
- <g id="shadow42-427" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st2"/>
- </g>
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st23"/>
- <text x="59.98" y="452.82" class="st11">libvirt</text> </g>
- <g id="shape43-433" transform="translate(168.536,-231.718)">
- <title>Dynamic connector.43</title>
- <path d="M0 465.98 L10.63 465.98 L10.63 466.16 L73.21 466.16" class="st24"/>
- </g>
- <g id="shape69-441" transform="translate(168.536,-190.527)">
- <title>Dynamic connector</title>
- <path d="M0 458.98 L10.63 458.98 L10.63 475.99 L63.29 475.99" class="st24"/>
- </g>
- <g id="shape26-447" transform="translate(26.8039,-181.846)">
- <title>Box.26</title>
- <desc>librte_power(Host)</desc>
- <g id="shadow26-448" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st2"/>
- </g>
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st19"/>
- <text x="35.53" y="452.82" class="st11">librte_power(Host)</text> </g>
- <g id="shape68-453" transform="translate(168.536,-200.449)">
- <title>Dynamic connector.68</title>
- <desc>Map vCPU to pCPU</desc>
- <path d="M5.8 451.9 L6.16 451.9 L73.21 451.9" class="st26"/>
- <rect x="4.11883" y="447.099" width="71.1324" height="9.59985" class="st27"/>
- <text x="4.12" y="454.3" class="st13">Map vCPU to pCPU</text> </g>
- <g id="shape27-464" transform="translate(26.8039,-164.838)">
- <title>Box.27</title>
- <desc>VM Power CLI</desc>
- <g id="shadow27-465" transform="matrix(1,0,0,1,1.44,1.44)" class="st1">
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st2"/>
- </g>
- <rect x="0" y="441.623" width="141.732" height="17.3622" class="st22"/>
- <text x="44.2" y="452.82" class="st11">VM Power CLI</text> </g>
- </g>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="135mm"
+ height="135mm"
+ viewBox="0 0 135 135"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.3 (2405546, 2018-03-11)"
+ sodipodi:docname="vm_power_mgr_highlevel.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow2Mstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5459"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12961"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ <path
+ transform="scale(-0.6)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path12959"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12763"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Mend">
+ <path
+ transform="scale(-0.6)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path12761"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker12573"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path12571"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker12395"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path12393"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <linearGradient
+ id="linearGradient12389"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#d07f7d;stop-opacity:1;"
+ offset="0"
+ id="stop12387" />
+ </linearGradient>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6022"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6020"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Send"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5468"
+ style="fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5462"
+ style="fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart"
+ inkscape:isstock="true">
+ <g
+ id="g2300"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1">
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,0 H 2"
+ id="path2306"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1"
+ d="M 0,0 13,4 9,0 13,-4 Z"
+ id="path2302"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,-4 V 40"
+ id="path2304"
+ inkscape:connector-curvature="0" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5751"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5749"
+ style="fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5438"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5456"
+ style="fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart-2"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart"
+ inkscape:isstock="true">
+ <g
+ id="g2300-9"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,0 H 2"
+ id="path2306-7" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1"
+ d="M 0,0 13,4 9,0 13,-4 Z"
+ id="path2302-1" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,-4 V 40"
+ id="path2304-4" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6022-2"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6020-9"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart-8"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart"
+ inkscape:isstock="true">
+ <g
+ id="g2300-8"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,0 H 2"
+ id="path2306-1" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1"
+ d="M 0,0 13,4 9,0 13,-4 Z"
+ id="path2302-6" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,-4 V 40"
+ id="path2304-7" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6022-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6020-3"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart"
+ inkscape:isstock="true">
+ <g
+ id="g2300-6"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,0 H 2"
+ id="path2306-12" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1"
+ d="M 0,0 13,4 9,0 13,-4 Z"
+ id="path2302-9" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,-4 V 40"
+ id="path2304-2" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6022-0"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6020-4"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart-80"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart"
+ inkscape:isstock="true">
+ <g
+ id="g2300-7"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,0 H 2"
+ id="path2306-8" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1"
+ d="M 0,0 13,4 9,0 13,-4 Z"
+ id="path2302-0" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,-4 V 40"
+ id="path2304-75" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6022-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6020-8"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart-89"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart"
+ inkscape:isstock="true">
+ <g
+ id="g2300-0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,0 H 2"
+ id="path2306-9" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1"
+ d="M 0,0 13,4 9,0 13,-4 Z"
+ id="path2302-2" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,-4 V 40"
+ id="path2304-5" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6022-38"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6020-1"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="DistanceStart-8-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="DistanceStart"
+ inkscape:isstock="true">
+ <g
+ id="g2300-8-1"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,0 H 2"
+ id="path2306-1-0" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1"
+ d="M 0,0 13,4 9,0 13,-4 Z"
+ id="path2302-6-2" />
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1"
+ d="M 0,-4 V 40"
+ id="path2304-7-3" />
+ </g>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Send"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6022-8-5"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6020-3-7"
+ style="fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-0.3,0,0,-0.3,0.69,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="424.83465"
+ inkscape:cy="254.38985"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1017"
+ inkscape:window-x="-8"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Drawing"
+ transform="translate(0,-162)">
+ <rect
+ style="opacity:1;fill:#b3ca83;fill-opacity:1;stroke:#000000;stroke-width:0.37057942;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4791"
+ width="33.990398"
+ height="45.425076"
+ x="85.676407"
+ y="164.63306" />
+ <rect
+ style="opacity:1;fill:#b3ca83;fill-opacity:1;stroke:#000000;stroke-width:0.35639697;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4530"
+ width="65.05616"
+ height="45.42617"
+ x="15.335129"
+ y="164.63112" />
+ <rect
+ style="opacity:0.97000002;fill:#a9c373;fill-opacity:1;stroke:#000000;stroke-width:0.22279529;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4530-7-8"
+ width="127.68393"
+ height="26.879263"
+ x="3.8373337"
+ y="267.58688" />
+ <rect
+ style="opacity:1;fill:#e6f3f7;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4532"
+ width="62.87516"
+ height="7.3101764"
+ x="16.408901"
+ y="165.59154" />
+ <rect
+ style="opacity:1;fill:#a8c270;fill-opacity:1;stroke:#000000;stroke-width:0.32159171;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4532-2"
+ width="62.906345"
+ height="6.0718322"
+ x="16.393307"
+ y="172.88612" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="35.209579"
+ y="169.98332"
+ id="text4551"><tspan
+ sodipodi:role="line"
+ id="tspan4549"
+ x="35.209579"
+ y="169.98332"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">DPDK Application</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="36.921368"
+ y="176.82596"
+ id="text4551-6"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8"
+ x="36.921368"
+ y="176.82596"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">librte_power(vm)</tspan></text>
+ <rect
+ style="opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571"
+ width="13.510916"
+ height="10.574122"
+ x="16.399574"
+ y="178.96422" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="22.99836"
+ y="182.19067"
+ id="text4551-6-1"><tspan
+ sodipodi:role="line"
+ x="22.99836"
+ y="182.19067"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605">lcore</tspan><tspan
+ sodipodi:role="line"
+ x="22.99836"
+ y="185.01289"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4609">channel</tspan><tspan
+ sodipodi:role="line"
+ x="22.99836"
+ y="187.83511"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593">0</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4595"
+ style="font-style:normal;font-weight:normal;font-size:10.66666698px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
+ id="flowRegion4597"
+ style="font-size:10.66666698px"><rect
+ id="rect4599"
+ width="7.0710678"
+ height="66.670067"
+ x="116.67262"
+ y="238.13113"
+ style="font-size:10.66666698px" /></flowRegion><flowPara
+ id="flowPara4601" /></flowRoot> <rect
+ style="opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-6"
+ width="13.510917"
+ height="10.574122"
+ x="33.050274"
+ y="178.97897" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="39.649059"
+ y="182.20543"
+ id="text4551-6-1-2"><tspan
+ sodipodi:role="line"
+ x="39.649059"
+ y="182.20543"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-8">lcore</tspan><tspan
+ sodipodi:role="line"
+ x="39.649059"
+ y="185.02765"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4609-3">channel</tspan><tspan
+ sodipodi:role="line"
+ x="39.649059"
+ y="187.84987"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-5">1</tspan></text>
+ <rect
+ style="opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-7"
+ width="13.510917"
+ height="10.574122"
+ x="49.888256"
+ y="178.97897" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="56.487041"
+ y="182.20544"
+ id="text4551-6-1-0"><tspan
+ sodipodi:role="line"
+ x="56.487041"
+ y="182.20544"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-7">lcore</tspan><tspan
+ sodipodi:role="line"
+ x="56.487041"
+ y="185.02766"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4609-9">channel</tspan><tspan
+ sodipodi:role="line"
+ x="56.487041"
+ y="187.84988"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-0">2</tspan></text>
+ <rect
+ style="opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-75"
+ width="13.510917"
+ height="10.574122"
+ x="65.788734"
+ y="178.95795" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="72.38752"
+ y="182.18442"
+ id="text4551-6-1-5"><tspan
+ sodipodi:role="line"
+ x="72.38752"
+ y="182.18442"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-2">lcore</tspan><tspan
+ sodipodi:role="line"
+ x="72.38752"
+ y="185.00664"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4609-6">channel</tspan><tspan
+ sodipodi:role="line"
+ x="72.38752"
+ y="187.82886"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-02">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="47.749531"
+ y="195.34956"
+ id="text4551-6-1-3-2"><tspan
+ sodipodi:role="line"
+ x="47.749531"
+ y="195.34956"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-6-6">VM 0</tspan></text>
+ <rect
+ style="opacity:1;fill:#e6f3f7;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4793"
+ width="31.844494"
+ height="7.3705354"
+ x="86.692558"
+ y="165.5556" />
+ <rect
+ style="opacity:1;fill:#a8c270;fill-opacity:1;stroke:#000000;stroke-width:0.32056567;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4793-5"
+ width="31.876707"
+ height="6.0798306"
+ x="86.67646"
+ y="172.91003" />
+ <rect
+ style="opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-75-0"
+ width="13.510918"
+ height="10.574122"
+ x="86.67646"
+ y="178.98987" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="93.275238"
+ y="182.21632"
+ id="text4551-6-1-5-9"><tspan
+ sodipodi:role="line"
+ x="93.275238"
+ y="182.21632"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-2-2">lcore</tspan><tspan
+ sodipodi:role="line"
+ x="93.275238"
+ y="185.03854"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4609-6-6">channel</tspan><tspan
+ sodipodi:role="line"
+ x="93.275238"
+ y="187.86076"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-02-9">0</tspan></text>
+ <rect
+ style="opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-75-40"
+ width="13.510918"
+ height="10.574122"
+ x="105.04224"
+ y="178.98987" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="111.64102"
+ y="182.21632"
+ id="text4551-6-1-5-98"><tspan
+ sodipodi:role="line"
+ x="111.64102"
+ y="182.21632"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-2-1">lcore</tspan><tspan
+ sodipodi:role="line"
+ x="111.64102"
+ y="185.03854"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4609-6-8">channel</tspan><tspan
+ sodipodi:role="line"
+ x="111.64102"
+ y="187.86076"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-02-4">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="103.07201"
+ y="195.55463"
+ id="text4551-6-1-3-2-6"><tspan
+ sodipodi:role="line"
+ x="103.07201"
+ y="195.55463"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-6-6-6">VM 1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="91.442757"
+ y="176.86929"
+ id="text4551-6-6"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-7"
+ x="91.442757"
+ y="176.86929"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">librte_power(vm)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="91.124741"
+ y="170.44301"
+ id="text4551-2"><tspan
+ sodipodi:role="line"
+ id="tspan4549-0"
+ x="91.124741"
+ y="170.44301"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">DPDK Application</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5309"
+ width="14.835566"
+ height="11.339286"
+ x="4.6515064"
+ y="274.38187" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="7.2982635"
+ y="281.1879"
+ id="text5313"><tspan
+ sodipodi:role="line"
+ id="tspan5311"
+ x="7.2982635"
+ y="281.1879"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Core 0</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5309-9"
+ width="14.835566"
+ height="11.339286"
+ x="20.545406"
+ y="274.38187" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="23.192165"
+ y="281.1879"
+ id="text5313-3"><tspan
+ sodipodi:role="line"
+ id="tspan5311-3"
+ x="23.192165"
+ y="281.1879"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Core 1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="68.209221"
+ y="291.73907"
+ id="text4551-6-1-3-2-3"><tspan
+ sodipodi:role="line"
+ x="68.209221"
+ y="291.73907"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-6-6-9">Host</tspan></text>
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.62289333;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#DistanceStart);marker-end:url(#marker6022)"
+ d="m 39.535285,203.58895 4.503022,68.50018"
+ id="path5433"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5309-9-2"
+ width="14.835566"
+ height="11.339286"
+ x="36.439308"
+ y="274.38187" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="39.086063"
+ y="281.1879"
+ id="text5313-3-7"><tspan
+ sodipodi:role="line"
+ id="tspan5311-3-5"
+ x="39.086063"
+ y="281.1879"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Core 2</tspan></text>
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.5908072;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#DistanceStart-2);marker-end:url(#marker6022-2)"
+ d="m 55.916812,205.90598 4.293524,66.48448"
+ id="path5433-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.61559618;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#DistanceStart-8);marker-end:url(#marker6022-8)"
+ d="m 71.933822,205.59072 4.043782,66.57817"
+ id="path5433-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.64176393;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#DistanceStart-9);marker-end:url(#marker6022-0)"
+ d="m 22.002638,205.5264 70.610773,67.15007"
+ id="path5433-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.58748102;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#DistanceStart-80);marker-end:url(#marker6022-3)"
+ d="M 92.495303,205.27884 123.88617,272.4858"
+ id="path5433-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.72912371;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#DistanceStart-89);marker-end:url(#marker6022-38)"
+ d="m 112.28597,207.28466 -4.3989,65.03043"
+ id="path5433-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:0.9;fill:#d07f7d;fill-opacity:0.96396401;stroke:#000000;stroke-width:0.2724604;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4530-7"
+ width="127.62878"
+ height="40.216084"
+ x="3.8649101"
+ y="227.3748" />
+ <rect
+ style="opacity:0.97000002;fill:#aac475;fill-opacity:1;stroke:#000000;stroke-width:0.35901672;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5115"
+ width="50.111969"
+ height="36.47134"
+ x="5.1204758"
+ y="229.27213" />
+ <rect
+ style="opacity:0.97000002;fill:#f8a25f;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5117"
+ width="45.451633"
+ height="5.4806519"
+ x="7.2379589"
+ y="230.65007" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="9.1533337"
+ y="234.43925"
+ id="text4551-6-8"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-0"
+ x="9.1533337"
+ y="234.43925"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Endpoint Monitor (lcore channels)</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#a4c3e8;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5117-9"
+ width="45.451633"
+ height="5.4806519"
+ x="7.2379532"
+ y="236.2211" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="17.619999"
+ y="239.7863"
+ id="text4551-6-8-8"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-0-2"
+ x="17.619999"
+ y="239.7863"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Channel Manager</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#d99896;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5117-1"
+ width="45.451633"
+ height="5.4806519"
+ x="7.2379456"
+ y="241.70174" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="17.090824"
+ y="245.26694"
+ id="text4551-6-8-1"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-0-1"
+ x="17.090824"
+ y="245.26694"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">librte_power (Host)</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#a3c3e9;fill-opacity:0.98039216;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5117-4"
+ width="45.451633"
+ height="5.4806519"
+ x="7.2379494"
+ y="247.1824" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="19.207497"
+ y="250.7476"
+ id="text4551-6-8-13"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-0-9"
+ x="19.207497"
+ y="250.7476"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">VM Power CLI</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#f9ae72;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5117-0"
+ width="45.451633"
+ height="5.4806519"
+ x="81.805901"
+ y="230.65007" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="99.596291"
+ y="234.21524"
+ id="text4551-6-8-4"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-0-97"
+ x="99.596291"
+ y="234.21524"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">QEMU</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#dfdfdf;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5117-0-8"
+ width="45.451633"
+ height="5.4806519"
+ x="81.805908"
+ y="236.13072" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="100.65464"
+ y="239.69588"
+ id="text4551-6-8-4-0"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-0-97-5"
+ x="100.65464"
+ y="239.69588"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">libvirt</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="29.925892"
+ y="260.64609"
+ id="text4551-6-1-3-2-9"><tspan
+ sodipodi:role="line"
+ x="29.925892"
+ y="260.64609"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-6-6-0">VM Power Monitor Application</tspan></text>
+ <rect
+ style="opacity:1;fill:#d07f7d;fill-opacity:0.91372549;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5117-0-7"
+ width="53.336025"
+ height="9.3962946"
+ x="73.564217"
+ y="244.95467" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="75.594803"
+ y="248.72948"
+ id="text4551-6-8-4-4"><tspan
+ sodipodi:role="line"
+ id="tspan4549-8-0-97-0"
+ x="75.594803"
+ y="248.72948"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Linux "userspace" power governor</tspan><tspan
+ sodipodi:role="line"
+ x="75.594803"
+ y="252.28992"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332"
+ id="tspan5289">/sys/devices/system/cpu/cpuN/cpufreq/</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="68.648186"
+ y="265.05075"
+ id="text4551-6-1-3-2-8"><tspan
+ sodipodi:role="line"
+ x="68.648186"
+ y="265.05075"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-6-6-7">OS/Hypervisor</tspan></text>
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-65"
+ width="13.510917"
+ height="10.574122"
+ x="16.394726"
+ y="198.42061" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="22.993511"
+ y="202.70541"
+ id="text4551-6-1-3"><tspan
+ sodipodi:role="line"
+ x="22.993511"
+ y="202.70541"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-6">Virtual</tspan><tspan
+ sodipodi:role="line"
+ x="22.993511"
+ y="205.52763"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-6">Core 0</tspan></text>
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-6-9"
+ width="13.510918"
+ height="10.574122"
+ x="33.045425"
+ y="198.43536" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="39.644207"
+ y="202.72017"
+ id="text4551-6-1-2-3"><tspan
+ sodipodi:role="line"
+ x="39.644207"
+ y="202.72017"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-8-0">Virtual</tspan><tspan
+ sodipodi:role="line"
+ x="39.644207"
+ y="205.54239"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-5-9">Core 1</tspan></text>
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-7-1"
+ width="13.510918"
+ height="10.574122"
+ x="49.883404"
+ y="198.43536" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="56.482189"
+ y="202.72017"
+ id="text4551-6-1-0-8"><tspan
+ sodipodi:role="line"
+ x="56.482189"
+ y="202.72017"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-7-1">Virtual</tspan><tspan
+ sodipodi:role="line"
+ x="56.482189"
+ y="205.54239"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-0-7">Core 2</tspan></text>
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-75-4"
+ width="13.510918"
+ height="10.574122"
+ x="65.783882"
+ y="198.41434" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="72.382668"
+ y="202.69914"
+ id="text4551-6-1-5-6"><tspan
+ sodipodi:role="line"
+ x="72.382668"
+ y="202.69914"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-2-8">Virtual</tspan><tspan
+ sodipodi:role="line"
+ x="72.382668"
+ y="205.52136"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-02-1">Core 3</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5309-9-7"
+ width="14.835566"
+ height="11.339286"
+ x="52.33321"
+ y="274.38187" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="54.979961"
+ y="281.1879"
+ id="text5313-3-0"><tspan
+ sodipodi:role="line"
+ id="tspan5311-3-55"
+ x="54.979961"
+ y="281.1879"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Core 3</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5309-9-8"
+ width="14.835566"
+ height="11.339286"
+ x="68.227104"
+ y="274.38187" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="70.873863"
+ y="281.1879"
+ id="text5313-3-3"><tspan
+ sodipodi:role="line"
+ id="tspan5311-3-9"
+ x="70.873863"
+ y="281.1879"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Core 4</tspan></text>
+ <rect
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5309-9-5"
+ width="14.835566"
+ height="11.339286"
+ x="84.120987"
+ y="274.38187" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="86.767769"
+ y="281.1879"
+ id="text5313-3-05"><tspan
+ sodipodi:role="line"
+ id="tspan5311-3-2"
+ x="86.767769"
+ y="281.1879"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332">Core 5</tspan></text>
+ <rect
+ y="274.38187"
+ x="100.01488"
+ height="11.339286"
+ width="14.835566"
+ id="rect5309-9-4"
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5313-3-5"
+ y="281.1879"
+ x="102.66164"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332"
+ y="281.1879"
+ x="102.66164"
+ id="tspan5311-3-50"
+ sodipodi:role="line">Core 6</tspan></text>
+ <rect
+ y="274.38187"
+ x="115.90883"
+ height="11.339286"
+ width="14.835566"
+ id="rect5309-9-6"
+ style="opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5313-3-03"
+ y="281.1879"
+ x="118.55559"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Arial;-inkscape-font-specification:Arial;stroke-width:0.26458332"
+ y="281.1879"
+ x="118.55559"
+ id="tspan5311-3-90"
+ sodipodi:role="line">Core 7</tspan></text>
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-6-9-8"
+ width="13.510919"
+ height="10.574122"
+ x="105.02563"
+ y="198.43262" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="111.62439"
+ y="202.71742"
+ id="text4551-6-1-2-3-5"><tspan
+ sodipodi:role="line"
+ x="111.62439"
+ y="202.71742"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-8-0-6">Virtual</tspan><tspan
+ sodipodi:role="line"
+ x="111.62439"
+ y="205.53964"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-5-9-0">Core 1</tspan></text>
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4571-65-0"
+ width="13.510918"
+ height="10.574122"
+ x="86.711884"
+ y="198.41786" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:2.82222223px;line-height:0;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="94.028839"
+ y="202.70267"
+ id="text4551-6-1-3-3"><tspan
+ sodipodi:role="line"
+ x="94.028839"
+ y="202.70267"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4605-6-1">Virtual</tspan><tspan
+ sodipodi:role="line"
+ x="94.028839"
+ y="205.52489"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;line-height:1;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan4593-6-3">Core 0</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.28939158px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker12763)"
+ d="m 52.951491,233.29052 h 28.50186"
+ id="path12353"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.28786668;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart);marker-end:url(#marker12573)"
+ d="M 53.218755,238.7333 H 81.453341"
+ id="path12353-4"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:1;fill:#fffdfd;fill-opacity:1;stroke:none;stroke-width:0.30100071;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect12385"
+ width="21.548515"
+ height="3.6533842"
+ x="56.826885"
+ y="236.97552" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="57.317425"
+ y="239.42633"
+ id="text12372"><tspan
+ sodipodi:role="line"
+ id="tspan12370"
+ x="57.317425"
+ y="239.42633"
+ style="font-size:2.11666656px;stroke-width:0.26458332">Map vCPU to pCPU</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.21566178px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker12961)"
+ d="M 52.689586,244.25695 H 63.60363 v 5.05835 h 9.755338"
+ id="path12951"
+ inkscape:connector-curvature="0" />
+ </g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
<!-- SPDX-License-Identifier: BSD-3-Clause -->
<!-- Copyright(c) 2014 Intel Corporation -->
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="190mm"
+ height="105mm"
+ viewBox="0 0 190 105"
version="1.1"
- width="912.44751"
- height="664.9787"
- id="svg5187"
- inkscape:version="0.48.5 r10040"
- sodipodi:docname="vm_power_mgr_vm_request_seq.svg">
- <metadata
- id="metadata5497">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
+ id="svg13567"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="VM_Req_to_Scale_Freq.svg">
<defs
- id="defs5495" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1920"
- inkscape:window-height="1005"
- id="namedview5493"
- showgrid="false"
- fit-margin-top="0.1"
- fit-margin-right="0.1"
- fit-margin-bottom="0.1"
- fit-margin-left="0.1"
- inkscape:zoom="1.5857392"
- inkscape:cx="533.1241"
- inkscape:cy="478.97029"
- inkscape:window-x="1920"
- inkscape:window-y="36"
- inkscape:window-maximized="0"
- inkscape:current-layer="Layer1000" />
- <g
- id="Layer1000"
- transform="matrix(1.3033705,0,0,1.3931773,-22.056332,168.16686)">
- <g
- id="Layer1001"
- transform="matrix(1.237886,0,0,1.2010974,-4.0390827,-71.427441)">
- <defs
- id="defs5191">
- <filter
- filterUnits="userSpaceOnUse"
- id="shadow1"
- color-interpolation-filters="sRGB">
- <feOffset
- in="SourceGraphic"
- result="offset"
- dx="1.4400"
- dy="1.4400"
- id="feOffset5194" />
- <feColorMatrix
- in="offset"
- result="offset-color"
- type="matrix"
- values="0 0 0 0 0.2745 0 0 0 0 0.2745 0 0 0 0 0.2745 0 0 0 0.4980 0"
- id="feColorMatrix5196" />
- <feMerge
- id="feMerge5198">
- <feMergeNode
- in="offset-color"
- id="feMergeNode5200" />
- <feMergeNode
- in="SourceGraphic"
- id="feMergeNode5202" />
- </feMerge>
- </filter>
- </defs>
- <defs
- id="defs5204">
- <linearGradient
- id="grad1">
- <stop
- offset="0%"
- stop-color="#ffffff"
- stop-opacity="1.0000"
- id="stop5207" />
- <stop
- offset="100%"
- stop-color="#ffffff"
- stop-opacity="1.0000"
- id="stop5209" />
- </linearGradient>
- <linearGradient
- xlink:href="#grad1"
- id="grad2"
- x1="164.37778"
- y1="54.035988"
- x2="164.37778"
- y2="290.9747"
- gradientTransform="scale(0.85432014,1.1705214)"
- gradientUnits="userSpaceOnUse" />
- </defs>
+ id="defs13561">
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker2723"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 157.2997,317.4803 168.6846,0 0,-231.1182 -168.6846,0 0,231.1182 z"
- style="fill:url(#grad2);fill-rule:evenodd;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;filter:url(#shadow1)"
- id="path5212"
+ id="path2721"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)"
inkscape:connector-curvature="0" />
- <defs
- id="defs5214">
- <filter
- filterUnits="userSpaceOnUse"
- id="shadow2"
- color-interpolation-filters="sRGB">
- <feOffset
- in="SourceGraphic"
- result="offset"
- dx="1.4400"
- dy="1.4400"
- id="feOffset5217" />
- <feColorMatrix
- in="offset"
- result="offset-color"
- type="matrix"
- values="0 0 0 0 0.2745 0 0 0 0 0.2745 0 0 0 0 0.2745 0 0 0 0.4980 0"
- id="feColorMatrix5219" />
- <feMerge
- id="feMerge5221">
- <feMergeNode
- in="offset-color"
- id="feMergeNode5223" />
- <feMergeNode
- in="SourceGraphic"
- id="feMergeNode5225" />
- </feMerge>
- </filter>
- </defs>
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 157.2997,317.4803 168.6846,0 0,-231.1182 -168.6846,0 0,231.1182 z"
- style="fill:none;stroke:#1f497d;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;filter:url(#shadow2)"
- id="path5227"
+ id="path899"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(0.6)"
inkscape:connector-curvature="0" />
- </g>
- <text
- x="192.70265"
- y="32.792809"
- id="text5229"
- transform="scale(1.0151991,0.98502847)"
- style="font-size:14.63223553px">
- <tspan
- font-size="8.0000"
- id="tspan5231"
- style="font-size:9.75482368px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">Loop: for each epoll event</tspan>
- </text>
- </g>
- <g
- id="Layer1002"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <path
- d="m 52.7934,331.6535 0,-272.4094"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44"
- id="path5234"
- inkscape:connector-curvature="0" />
- <text
- x="-79.411301"
- y="195.44881"
- transform="matrix(0,-1,1,0,-142.6554,248.2422)"
- id="text5236">
- <tspan
- font-size="12.0000"
- id="tspan5238"
- style="font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1003"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <g
- id="Layer1004">
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 17.2272,59.2441 71.1324,0 0,-25.2284 -71.1324,0 0,25.2284 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5242"
+ id="path902"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)"
inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 17.2272,59.2441 71.1324,0 0,-25.2284 -71.1324,0 0,25.2284 z"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5244"
+ id="path881"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(0.4,0,0,0.4,4,0)"
inkscape:connector-curvature="0" />
- </g>
- <text
- x="21.2272"
- y="46.629902"
- id="text5246">
- <tspan
- font-size="8.0000"
- id="tspan5248"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">librte_power(VM)</tspan>
- </text>
- </g>
- <text
- x="334.86655"
- y="44.000031"
- id="text5250"
- transform="scale(0.98193323,1.0183992)"
- style="font-size:19.71731567px">
- <tspan
- font-weight="bold"
- font-size="36.0000"
- id="tspan5252"
- style="font-size:59.15194702px;font-weight:bold;fill:#cdcdcd;fill-opacity:1;stroke-opacity:1;font-family:Calibri">Sequence</tspan>
- </text>
- <g
- id="Layer1005"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <path
- d="m 129.4472,331.6535 0,-272.4094"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44"
- id="path5255"
- inkscape:connector-curvature="0" />
- <text
- x="-2.7574999"
- y="195.44881"
- transform="matrix(0,-1,1,0,-66.0016,324.896)"
- id="text5257">
- <tspan
- font-size="12.0000"
- id="tspan5259"
- style="font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1006"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <g
- id="Layer1007">
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker1748"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Mend">
<path
- d="m 89.6487,59.2441 79.5971,0 0,-25.2284 -79.5971,0 0,25.2284 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5263"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path1746"
inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 89.6487,59.2441 79.5971,0 0,-25.2284 -79.5971,0 0,25.2284 z"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5265"
+ id="path884"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
inkscape:connector-curvature="0" />
- </g>
- <text
- x="93.648697"
- y="46.629902"
- id="text5267">
- <tspan
- font-size="8.0000"
- id="tspan5269"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">guest_channel(VM)</tspan>
- </text>
- </g>
- <g
- id="Layer1008"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <path
- d="m 240.9449,354.9562 0,-293.7369"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44"
- id="path5272"
- inkscape:connector-curvature="0" />
- <text
- x="98.076401"
- y="208.0878"
- transform="matrix(0,-1,1,0,32.8571,449.0327)"
- id="text5274">
- <tspan
- font-size="12.0000"
- id="tspan5276"
- style="font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1009"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <g
- id="Layer1010">
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 195.3689,61.2193 91.152,0 0,-27.2036 -91.152,0 0,27.2036 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5280"
+ id="path896"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1565-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 195.3689,61.2193 91.152,0 0,-27.2036 -91.152,0 0,27.2036 z"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5282"
- inkscape:connector-curvature="0" />
- </g>
- <text
- x="199.3689"
- y="47.6175"
- id="text5284">
- <tspan
- font-size="8.0000"
- id="tspan5286"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">channel_monitor(Host)</tspan>
- <tspan
- font-size="8.0000"
- id="tspan5288"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1011"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <path
- d="m 361.5266,352.9811 0,-293.737"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44"
- id="path5291"
- inkscape:connector-curvature="0" />
- <text
- x="218.6581"
- y="206.11259"
- transform="matrix(0,-1,1,0,155.414,567.6392)"
- id="text5293">
- <tspan
- font-size="12.0000"
- id="tspan5295"
- style="font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1012"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <g
- id="Layer1013">
+ inkscape:connector-curvature="0"
+ id="path1563-2"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend-5"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 313.5013,59.2441 96.0505,0 0,-27.2035 -96.0505,0 0,27.2035 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5299"
- inkscape:connector-curvature="0" />
+ inkscape:connector-curvature="0"
+ id="path902-8"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mstart-0"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 313.5013,59.2441 96.0505,0 0,-27.2035 -96.0505,0 0,27.2035 z"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5301"
- inkscape:connector-curvature="0" />
- </g>
- <text
- x="317.50131"
- y="45.6423"
- id="text5303">
- <tspan
- font-size="8.0000"
- id="tspan5305"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">channel_manager(Host)</tspan>
- <tspan
- font-size="8.0000"
- id="tspan5307"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1014"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <path
- d="m 458.3741,331.6535 0,-272.4094"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44"
- id="path5310"
- inkscape:connector-curvature="0" />
- <text
- x="326.1694"
- y="195.44881"
- transform="matrix(0,-1,1,0,262.9253,653.8229)"
- id="text5312">
- <tspan
- font-size="12.0000"
- id="tspan5314"
- style="font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1015"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <g
- id="Layer1016">
+ inkscape:connector-curvature="0"
+ id="path899-2"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend-5-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 413.466,59.2441 89.8163,0 0,-25.2284 -89.8163,0 0,25.2284 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5318"
- inkscape:connector-curvature="0" />
+ inkscape:connector-curvature="0"
+ id="path902-8-5"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mstart-0-0"
+ style="overflow:visible"
+ inkscape:isstock="true">
<path
- d="m 413.466,59.2441 89.8163,0 0,-25.2284 -89.8163,0 0,25.2284 z"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5320"
- inkscape:connector-curvature="0" />
- </g>
- <text
- x="417.466"
- y="46.629902"
- id="text5322">
- <tspan
- font-size="8.0000"
- id="tspan5324"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">power_manager(Host)</tspan>
- </text>
- </g>
+ inkscape:connector-curvature="0"
+ id="path899-2-6"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mstart-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path899-9"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(0.6)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path902-2"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="422.48941"
+ inkscape:cy="233.91334"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer3"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1137"
+ inkscape:window-x="1912"
+ inkscape:window-y="-8"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata13564">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
<g
- id="Layer1017"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Drawing"
+ transform="translate(0,-192)">
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000010;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:0.35277779, 0.35277779;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect6314"
+ width="54.923889"
+ height="77.909065"
+ x="47.091534"
+ y="211.93466" />
+ <rect
+ style="opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581"
+ width="23.118814"
+ height="8.4189901"
+ x="2.0566161"
+ y="194.62044" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="13.409275"
+ y="197.77512"
+ id="text13585"><tspan
+ sodipodi:role="line"
+ x="13.409275"
+ y="197.77512"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13587">librte_power</tspan><tspan
+ sodipodi:role="line"
+ x="13.409275"
+ y="201.30289"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591">(VM)</tspan></text>
+ <rect
+ style="opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-3"
+ width="23.118814"
+ height="8.4189901"
+ x="26.728348"
+ y="194.62044" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="38.081005"
+ y="197.77512"
+ id="text13585-4"><tspan
+ sodipodi:role="line"
+ x="38.081005"
+ y="197.77512"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13587-4">guest_channel</tspan><tspan
+ sodipodi:role="line"
+ x="38.081005"
+ y="201.30289"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-7">(VM)</tspan></text>
+ <rect
+ style="opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36962408;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-3-9"
+ width="25.405504"
+ height="8.4103832"
+ x="61.705341"
+ y="194.62886" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="74.146271"
+ y="197.77512"
+ id="text13585-4-3"><tspan
+ sodipodi:role="line"
+ x="74.146271"
+ y="197.77512"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13587-4-5">channel_monitor</tspan><tspan
+ sodipodi:role="line"
+ x="74.146271"
+ y="201.30289"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-7-5">(Host)</tspan></text>
+ <rect
+ style="opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.3830055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-3-9-9"
+ width="27.293171"
+ height="8.4058018"
+ x="98.781654"
+ y="194.63556" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="112.44437"
+ y="197.77512"
+ id="text13585-4-3-8"><tspan
+ sodipodi:role="line"
+ x="112.44437"
+ y="197.77512"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13587-4-5-3">channel_manager</tspan><tspan
+ sodipodi:role="line"
+ x="112.44437"
+ y="201.30289"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-7-5-5">(Host)</tspan></text>
+ <rect
+ style="opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.3830055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-3-9-9-0"
+ width="27.293173"
+ height="8.4058018"
+ x="130.46378"
+ y="194.63556" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="144.1265"
+ y="197.186"
+ id="text13585-4-3-8-4"><tspan
+ sodipodi:role="line"
+ x="144.1265"
+ y="197.186"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13587-4-5-3-0">power_manager</tspan><tspan
+ sodipodi:role="line"
+ x="144.1265"
+ y="200.71378"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-7-5-5-2">(Host)</tspan></text>
+ <rect
+ style="opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.3830055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-3-9-9-0-6"
+ width="27.293173"
+ height="8.4058018"
+ x="160.53162"
+ y="194.63556" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;line-height:1.25;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="174.19434"
+ y="197.77512"
+ id="text13585-4-3-8-4-7"><tspan
+ sodipodi:role="line"
+ x="174.19434"
+ y="197.77512"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13587-4-5-3-0-8">librte_power</tspan><tspan
+ sodipodi:role="line"
+ x="174.19434"
+ y="201.30289"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-7-5-5-2-7">(Host)</tspan></text>
<path
- d="m 249.6969,310.3937 0,-209.7638 -9,0 0,209.7638 9,0 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5327"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.05833333, 1.05833333;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 13.816475,203.11478 v 91.27254"
+ id="path968"
inkscape:connector-curvature="0" />
<path
- d="m 249.6969,310.3937 0,-209.7638 -9,0 0,209.7638 9,0 z"
- style="fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5329"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.05833334, 1.05833334;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 38.538907,203.44886 V 294.7214"
+ id="path968-7"
inkscape:connector-curvature="0" />
- </g>
- <g
- id="Layer1018"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5332">
- <marker
- id="endMarker1"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="1"
- refY="5">
- <polyline
- points="0,0 10,5 0,10 1,5"
- fill="solid"
- id="polyline5335" />
- </marker>
- </defs>
<path
- d="m 249.6969,154.6299 a 23.4,468 90 0 1 0,18"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker1)"
- id="path5337"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.05833335, 1.05833335;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 74.219389,203.71614 v 91.27253"
+ id="path968-7-8"
inkscape:connector-curvature="0" />
- <text
- x="289.6969"
- y="163.6299"
- id="text5339">
- <tspan
- font-size="8.0000"
- id="tspan5341"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">process_request</tspan>
- </text>
- </g>
- <g
- id="Layer1019"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5344">
- <marker
- id="endMarker2"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="1"
- refY="5">
- <polyline
- points="0,0 10,5 0,10 1,5"
- fill="solid"
- id="polyline5347" />
- </marker>
- </defs>
<path
- d="m 249.6969,190.6299 108.6323,-0.7086"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker2)"
- id="path5349"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.05833335, 1.05833335;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 113.37436,203.44887 v 91.27254"
+ id="path968-7-5"
inkscape:connector-curvature="0" />
- <text
- x="271.9838"
- y="179.6738"
- id="text5351">
- <tspan
- font-size="8.0000"
- id="tspan5353"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">get_pcpu_mask()</tspan>
- </text>
- </g>
- <g
- id="Layer1020"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
<path
- d="m 367.3292,225.9213 0,-36 -9,0 0,36 9,0 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5356"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.05833335, 1.05833335;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 144.6449,202.91433 v 91.27253"
+ id="path968-7-0"
inkscape:connector-curvature="0" />
<path
- d="m 367.3292,225.9213 0,-36 -9,0 0,36 9,0 z"
- style="fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5358"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="Layer1021"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5361">
- <marker
- id="startMarker1"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="9"
- refY="5">
- <polyline
- points="10,0 0,5 10,10 9,5"
- fill="solid"
- id="polyline5364" />
- </marker>
- </defs>
- <path
- d="m 249.6969,226.6299 108.6323,-0.7086"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44;marker-start:url(#startMarker1)"
- id="path5366"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.05833335, 1.05833335;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 172.17366,203.44887 V 294.7214"
+ id="path968-7-6"
inkscape:connector-curvature="0" />
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5"
+ width="2.9174259"
+ height="6.2582946"
+ x="36.94656"
+ y="228.71709" />
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8"
+ width="2.9174256"
+ height="6.2582946"
+ x="12.285574"
+ y="228.71709" />
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-0"
+ width="2.545445"
+ height="69.763725"
+ x="72.813026"
+ y="217.14323" />
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-3"
+ width="2.849076"
+ height="12.337144"
+ x="112.08347"
+ y="247.05385" />
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-3-0"
+ width="2.849076"
+ height="12.337144"
+ x="143.354"
+ y="270.57895" />
+ <rect
+ style="opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-9"
+ width="2.9174259"
+ height="6.2582946"
+ x="170.84859"
+ y="276.69199" />
<text
- x="282.43311"
- y="215.6738"
- id="text5368">
- <tspan
- font-size="8.0000"
- id="tspan5370"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">pcpu_mask</tspan>
- </text>
- </g>
- <g
- id="Layer1022"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <path
- d="m 544.3667,331.6535 0,-272.4094"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44"
- id="path5373"
- inkscape:connector-curvature="0" />
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="25.989178"
+ y="226.47469"
+ id="text13585-3"><tspan
+ sodipodi:role="line"
+ x="25.989178"
+ y="226.47469"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3">rte_power_freq_up()</tspan></text>
<text
- x="412.1619"
- y="195.44881"
- transform="matrix(0,-1,1,0,348.9179,739.8155)"
- id="text5375">
- <tspan
- font-size="12.0000"
- id="tspan5377"
- style="font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial" />
- </text>
- </g>
- <g
- id="Layer1023"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <g
- id="Layer1024">
- <path
- d="m 506.5757,59.2441 75.5819,0 0,-25.2284 -75.5819,0 0,25.2284 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5381"
- inkscape:connector-curvature="0" />
- <path
- d="m 506.5757,59.2441 75.5819,0 0,-25.2284 -75.5819,0 0,25.2284 z"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5383"
- inkscape:connector-curvature="0" />
- </g>
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="24.740162"
+ y="233.53178"
+ id="text13585-3-3"><tspan
+ sodipodi:role="line"
+ x="24.740162"
+ y="233.53178"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-0">status</tspan></text>
<text
- x="510.57571"
- y="46.629902"
- id="text5385">
- <tspan
- font-size="8.0000"
- id="tspan5387"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">librte_power(Host)</tspan>
- </text>
- </g>
- <g
- id="Layer1025"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5390">
- <marker
- id="endMarker3"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="1"
- refY="5">
- <polyline
- points="0,0 10,5 0,10 1,5"
- fill="solid"
- id="polyline5393" />
- </marker>
- </defs>
- <path
- d="m 249.6969,262.6299 205.4799,-0.7086"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker3)"
- id="path5395"
- inkscape:connector-curvature="0" />
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:2;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="56.144329"
+ y="214.84552"
+ id="text13585-3-1"><tspan
+ sodipodi:role="line"
+ x="56.486771"
+ y="214.84552"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-7">Loop: for each </tspan><tspan
+ sodipodi:role="line"
+ x="56.144329"
+ y="217.66774"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan1137">epoll event</tspan></text>
<text
- x="303.06931"
- y="251.6738"
- id="text5397">
- <tspan
- font-size="8.0000"
- id="tspan5399"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">scale_freq_up(pcpu_mask)</tspan>
- </text>
- </g>
- <g
- id="Layer1026"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <path
- d="m 464.1768,297.9213 0,-36 -9,0 0,36 9,0 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5402"
- inkscape:connector-curvature="0" />
- <path
- d="m 464.1768,297.9213 0,-36 -9,0 0,36 9,0 z"
- style="fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5404"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="Layer1027"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5407">
- <marker
- id="endMarker4"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="1"
- refY="5">
- <polyline
- points="0,0 10,5 0,10 1,5"
- fill="solid"
- id="polyline5410" />
- </marker>
- </defs>
- <path
- d="m 464.1768,279.9213 76.9925,0"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker4)"
- id="path5412"
- inkscape:connector-curvature="0" />
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="91.464294"
+ y="233.68802"
+ id="text13585-3-4-9"><tspan
+ sodipodi:role="line"
+ x="91.464294"
+ y="233.68802"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-6-1">process_request</tspan></text>
<text
- x="465.31769"
- y="269.31949"
- id="text5414">
- <tspan
- font-size="8.0000"
- id="tspan5416"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">rte_power_freq_up()</tspan>
- </text>
- </g>
- <g
- id="Layer1028"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="91.556564"
+ y="245.283"
+ id="text13585-3-4-9-4"><tspan
+ sodipodi:role="line"
+ x="91.556564"
+ y="245.283"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-6-1-0">get_pcpu_mask()</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="90.904503"
+ y="257.57739"
+ id="text13585-3-4-9-2"><tspan
+ sodipodi:role="line"
+ x="90.904503"
+ y="257.57739"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-6-1-05">pcpu_mask</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="158.28529"
+ y="281.20514"
+ id="text13585-3-3-2-1"><tspan
+ sodipodi:role="line"
+ x="158.28529"
+ y="281.20514"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-0-1-8">status</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="159.21713"
+ y="274.58026"
+ id="text13585-3-4-9-4-5"><tspan
+ sodipodi:role="line"
+ x="159.21713"
+ y="274.58026"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-6-1-0-5">rte_power_freq_up()</tspan></text>
<path
- d="m 550.1693,297.9213 0,-18 -9,0 0,18 9,0 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5419"
- inkscape:connector-curvature="0" />
+ style="fill:none;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+ d="m 75.021197,234.51894 c 6.293309,0.0388 13.971298,0.23602 14.165285,3.60814 0.04205,3.38442 -8.987218,3.32283 -13.497112,3.47451"
+ id="path873"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
<path
- d="m 550.1693,297.9213 0,-18 -9,0 0,18 9,0 z"
- style="fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5421"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
+ d="M 15.203,228.85074 H 36.946558"
+ id="path1561"
inkscape:connector-curvature="0" />
- </g>
- <g
- id="Layer1029"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
<path
- d="m 132.0591,154.4882 0,-18 -9,0 0,18 9,0 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5424"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.70555558, 0.70555558;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#Arrow2Mstart)"
+ d="M 15.203001,234.9754 H 36.946559"
+ id="path1561-3"
inkscape:connector-curvature="0" />
<path
- d="m 132.0591,154.4882 0,-18 -9,0 0,18 9,0 z"
- style="fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5426"
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2723)"
+ d="M 39.724979,234.9754 H 72.577131"
+ id="path1561-0"
inkscape:connector-curvature="0" />
- </g>
- <g
- id="Layer1030"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5429">
- <marker
- id="endMarker5"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="1"
- refY="5">
- <polyline
- points="0,0 10,5 0,10 1,5"
- fill="solid"
- id="polyline5432" />
- </marker>
- </defs>
<path
- d="m 132.0591,154.4882 108.6378,0.1417"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker5)"
- id="path5434"
- inkscape:connector-curvature="0" />
- <text
- x="135.90199"
- y="143.95731"
- id="text5436">
- <tspan
- font-size="8.0000"
- id="tspan5438"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">guest_channel_send_msg()</tspan>
- </text>
- </g>
- <g
- id="Layer1031"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5441">
- <marker
- id="startMarker2"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="9"
- refY="5">
- <polyline
- points="10,0 0,5 10,10 9,5"
- fill="solid"
- id="polyline5444" />
- </marker>
- </defs>
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-5)"
+ d="m 75.241702,246.95037 36.841758,0.10349"
+ id="path1561-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
<path
- d="m 464.1768,297.9213 76.9925,0"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44;marker-start:url(#startMarker2)"
- id="path5446"
- inkscape:connector-curvature="0" />
- <text
- x="486.673"
- y="287.31949"
- id="text5448">
- <tspan
- font-size="8.0000"
- id="tspan5450"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">status</tspan>
- </text>
- </g>
- <g
- id="Layer1032"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5453">
- <marker
- id="startMarker3"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="9"
- refY="5">
- <polyline
- points="10,0 0,5 10,10 9,5"
- fill="solid"
- id="polyline5456" />
- </marker>
- </defs>
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.70555559, 0.70555559;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#Arrow2Mstart-0)"
+ d="M 75.372816,259.391 H 112.08346"
+ id="path1561-3-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
<path
- d="m 249.6969,298.6299 205.4799,-0.7086"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44;marker-start:url(#startMarker3)"
- id="path5458"
- inkscape:connector-curvature="0" />
- <text
- x="336.4306"
- y="287.6738"
- id="text5460">
- <tspan
- font-size="8.0000"
- id="tspan5462"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">status</tspan>
- </text>
- </g>
- <g
- id="Layer1033"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-5-8)"
+ d="M 75.241704,270.47547 143.354,270.57896"
+ id="path1561-5-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
<path
- d="m 55.4053,154.4882 0,-18 -9,0 0,18 9,0 z"
- style="fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round"
- id="path5465"
- inkscape:connector-curvature="0" />
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.7055556, 0.7055556;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#Arrow2Mstart-0-0)"
+ d="M 75.372824,282.9161 H 143.354"
+ id="path1561-3-9-8"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
<path
- d="m 55.4053,154.4882 0,-18 -9,0 0,18 9,0 z"
- style="fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
- id="path5467"
- inkscape:connector-curvature="0" />
- </g>
- <g
- id="Layer1034"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5470">
- <marker
- id="endMarker6"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="1"
- refY="5">
- <polyline
- points="0,0 10,5 0,10 1,5"
- fill="solid"
- id="polyline5473" />
- </marker>
- </defs>
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-3)"
+ d="m 146.29869,276.69198 h 24.54989"
+ id="path1561-4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
<path
- d="m 55.4053,136.4882 67.6538,0"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker6)"
- id="path5475"
- inkscape:connector-curvature="0" />
+ style="fill:none;stroke:#000000;stroke-width:0.35277778;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.70555559, 0.70555559;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#Arrow2Mstart-3)"
+ d="m 146.43232,282.81664 h 24.41626"
+ id="path1561-3-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-4"
+ width="2.9174259"
+ height="3.3636653"
+ x="111.91566"
+ y="265.54959" />
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-4-8"
+ width="2.9174259"
+ height="3.3636653"
+ x="45.63282"
+ y="230.29805" />
<text
- x="51.876801"
- y="125.8864"
- id="text5477">
- <tspan
- font-size="8.0000"
- id="tspan5479"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">rte_power_freq_up()</tspan>
- </text>
- </g>
- <g
- id="Layer1035"
- transform="matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)">
- <defs
- id="defs5482">
- <marker
- id="startMarker4"
- markerUnits="strokeWidth"
- orient="auto"
- markerWidth="8"
- markerHeight="6"
- viewBox="0 0 10 10"
- refX="9"
- refY="5">
- <polyline
- points="10,0 0,5 10,10 9,5"
- fill="solid"
- id="polyline5485" />
- </marker>
- </defs>
- <path
- d="m 55.4053,154.4882 72.1538,0"
- style="fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.88, 1.44, 2.88, 1.44;marker-start:url(#startMarker4)"
- id="path5487"
- inkscape:connector-curvature="0" />
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="56.678867"
+ y="232.61894"
+ id="text13585-3-4"><tspan
+ sodipodi:role="line"
+ x="56.678867"
+ y="232.61894"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-6">guest_channel_send_msg()</tspan></text>
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-4-9"
+ width="2.9174259"
+ height="3.3636653"
+ x="100.28944"
+ y="265.70587" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="110.37933"
+ y="268.28806"
+ id="text13585-3-4-9-2-6"><tspan
+ sodipodi:role="line"
+ x="110.37933"
+ y="268.28806"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-6-1-05-4">scale_freq_up(pcpu_mask)</tspan></text>
+ <rect
+ style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect13581-8-5-4-99"
+ width="2.9174259"
+ height="3.3636653"
+ x="111.78201"
+ y="278.54019" />
<text
- x="75.482201"
- y="143.8864"
- id="text5489">
- <tspan
- font-size="8.0000"
- id="tspan5491"
- style="font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial">status</tspan>
- </text>
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:1.41111112px;line-height:1.5;font-family:Arial;-inkscape-font-specification:'Arial Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ x="113.21278"
+ y="280.93787"
+ id="text13585-3-3-2"><tspan
+ sodipodi:role="line"
+ x="113.21278"
+ y="280.93787"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.46944451px;line-height:0px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;text-anchor:middle;stroke-width:0.26458332"
+ id="tspan13591-3-0-1">status</tspan></text>
</g>
</svg>
.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2010-2014 Intel Corporation.
-VM Power Management Application
-===============================
-
-Introduction
-------------
-
-Applications running in Virtual Environments have an abstract view of
-the underlying hardware on the Host, in particular applications cannot see
-the binding of virtual to physical hardware.
-When looking at CPU resourcing, the pinning of Virtual CPUs(vCPUs) to
-Host Physical CPUs(pCPUS) is not apparent to an application
-and this pinning may change over time.
-Furthermore, Operating Systems on virtual machines do not have the ability
-to govern their own power policy; the Machine Specific Registers (MSRs)
-for enabling P-State transitions are not exposed to Operating Systems
-running on Virtual Machines(VMs).
-
-The Virtual Machine Power Management solution shows an example of
-how a DPDK application can indicate its processing requirements using VM local
-only information(vCPU/lcore, etc.) to a Host based Monitor which is responsible
-for accepting requests for frequency changes for a vCPU, translating the vCPU
-to a pCPU via libvirt and affecting the change in frequency.
-
-The solution is comprised of two high-level components:
-
-#. Example Host Application
-
- Using a Command Line Interface(CLI) for VM->Host communication channel management
- allows adding channels to the Monitor, setting and querying the vCPU to pCPU pinning,
- inspecting and manually changing the frequency for each CPU.
- The CLI runs on a single lcore while the thread responsible for managing
- VM requests runs on a second lcore.
-
- VM requests arriving on a channel for frequency changes are passed
- to the librte_power ACPI cpufreq sysfs based library.
- The Host Application relies on both qemu-kvm and libvirt to function.
-
- This monitoring application is responsible for:
-
- - Accepting requests from client applications: Client applications can
- request frequency changes for a vCPU, translating
- the vCPU to a pCPU via libvirt and affecting the change in frequency.
-
- - Accepting policies from client applications: Client application can
- send a policy to the host application. The
- host application will then apply the rules of the policy independent
- of the application. For example, the policy can contain time-of-day
- information for busy/quiet periods, and the host application can scale
- up/down the relevant cores when required. See the details of the guest
- application below for more information on setting the policy values.
-
- - Out-of-band monitoring of workloads via cores hardware event counters:
- The host application can manage power for an application in a virtualised
- OR non-virtualised environment by looking at the event counters of the
- cores and taking action based on the branch hit/miss ratio. See the host
- application '--core-list' command line parameter below.
-
-#. librte_power for Virtual Machines
-
- Using an alternate implementation for the librte_power API, requests for
- frequency changes are forwarded to the host monitor rather than
- the APCI cpufreq sysfs interface used on the host.
-
- The l3fwd-power application will use this implementation when deployed on a VM
- (see :doc:`l3_forward_power_man`).
+Virtual Machine Power Management Application
+============================================
+
+Applications running in virtual environments have an abstract view of
+the underlying hardware on the host. Specifically, applications cannot
+see the binding of virtual components to physical hardware. When looking
+at CPU resourcing, the pinning of Virtual CPUs (vCPUs) to Physical CPUs
+(pCPUs) on the host is not apparent to an application and this pinning
+may change over time. In addition, operating systems on Virtual Machines
+(VMs) do not have the ability to govern their own power policy. The
+Machine Specific Registers (MSRs) for enabling P-state transitions are
+not exposed to the operating systems running on the VMs.
+
+The solution demonstrated in this sample application shows an example of
+how a DPDK application can indicate its processing requirements using
+VM-local only information (vCPU/lcore, and so on) to a host resident VM
+Power Manager. The VM Power Manager is responsible for:
+
+- **Accepting requests for frequency changes for a vCPU**
+- **Translating the vCPU to a pCPU using libvirt**
+- **Performing the change in frequency**
+
+This application demonstrates the following features:
+
+- **The handling of VM application requests to change frequency.**
+ VM applications can request frequency changes for a vCPU. The VM
+ Power Management Application uses libvirt to translate that
+ virtual CPU (vCPU) request to a physical CPU (pCPU) request and
+ performs the frequency change.
+
+- **The acceptance of power management policies from VM applications.**
+ A VM application can send a policy to the host application. The
+ policy contains rules that define the power management behaviour
+ of the VM. The host application then applies the rules of the
+ policy independent of the VM application. For example, the
+ policy can contain time-of-day information for busy/quiet
+ periods, and the host application can scale up/down the relevant
+ cores when required. See :ref:`sending_policy` for information on
+ setting policy values.
+
+- **Out-of-band monitoring of workloads using core hardware event counters.**
+ The host application can manage power for an application by looking
+ at the event counters of the cores and taking action based on the
+ branch miss/hit ratio. See :ref:`enabling_out_of_band`.
+
+ **Note**: This functionality also applies in non-virtualised environments.
+
+In addition to the ``librte_power`` library used on the host, the
+application uses a special version of ``librte_power`` on each VM, which
+directs frequency changes and policies to the host monitor rather than
+the APCI ``cpufreq`` ``sysfs`` interface used on the host in non-virtualised
+environments.
.. _figure_vm_power_mgr_highlevel:
Highlevel Solution
+In the above diagram, the DPDK Applications are shown running in
+virtual machines, and the VM Power Monitor application is shown running
+in the host.
+
+**DPDK VM Application**
+
+- Reuse ``librte_power`` interface, but uses an implementation that
+ forwards frequency requests to the host using a ``virtio-serial`` channel
+- Each lcore has exclusive access to a single channel
+- Sample application reuses ``l3fwd_power``
+- A CLI for changing frequency from within a VM is also included
+
+**VM Power Monitor**
+
+- Accepts VM commands over ``virtio-serial`` endpoints, monitored
+ using ``epoll``
+- Commands include the virtual core to be modified, using ``libvirt`` to get
+ the physical core mapping
+- Uses ``librte_power`` to affect frequency changes using Linux userspace
+ power governor (``acpi_cpufreq`` OR ``intel_pstate`` driver)
+- CLI: For adding VM channels to monitor, inspecting and changing channel
+ state, manually altering CPU frequency. Also allows for the changings
+ of vCPU to pCPU pinning
+
+Sample Application Architecture Overview
+----------------------------------------
+
+The VM power management solution employs ``qemu-kvm`` to provide
+communications channels between the host and VMs in the form of a
+``virtio-serial`` connection that appears as a para-virtualised serial
+device on a VM and can be configured to use various backends on the
+host. For this example, the configuration of each ``virtio-serial`` endpoint
+on the host as an ``AF_UNIX`` file socket, supporting poll/select and
+``epoll`` for event notification. In this example, each channel endpoint on
+the host is monitored for ``EPOLLIN`` events using ``epoll``. Each channel
+is specified as ``qemu-kvm`` arguments or as ``libvirt`` XML for each VM,
+where each VM can have several channels up to a maximum of 64 per VM. In this
+example, each DPDK lcore on a VM has exclusive access to a channel.
+
+To enable frequency changes from within a VM, the VM forwards a
+``librte_power`` request over the ``virtio-serial`` channel to the host. Each
+request contains the vCPU and power command (scale up/down/min/max). The
+API for the host ``librte_power`` and guest ``librte_power`` is consistent
+across environments, with the selection of VM or host implementation
+determined automatically at runtime based on the environment. On
+receiving a request, the host translates the vCPU to a pCPU using the
+libvirt API before forwarding it to the host ``librte_power``.
-Overview
---------
-
-VM Power Management employs qemu-kvm to provide communications channels
-between the host and VMs in the form of Virtio-Serial which appears as
-a paravirtualized serial device on a VM and can be configured to use
-various backends on the host. For this example each Virtio-Serial endpoint
-on the host is configured as AF_UNIX file socket, supporting poll/select
-and epoll for event notification.
-In this example each channel endpoint on the host is monitored via
-epoll for EPOLLIN events.
-Each channel is specified as qemu-kvm arguments or as libvirt XML for each VM,
-where each VM can have a number of channels up to a maximum of 64 per VM,
-in this example each DPDK lcore on a VM has exclusive access to a channel.
-
-To enable frequency changes from within a VM, a request via the librte_power interface
-is forwarded via Virtio-Serial to the host, each request contains the vCPU
-and power command(scale up/down/min/max).
-The API for host and guest librte_power is consistent across environments,
-with the selection of VM or Host Implementation determined at automatically
-at runtime based on the environment.
-
-Upon receiving a request, the host translates the vCPU to a pCPU via
-the libvirt API before forwarding to the host librte_power.
.. _figure_vm_power_mgr_vm_request_seq:
.. figure:: img/vm_power_mgr_vm_request_seq.*
- VM request to scale frequency
-
+In addition to the ability to send power management requests to the
+host, a VM can send a power management policy to the host. In some
+cases, using a power management policy is a preferred option because it
+can eliminate possible latency issues that can occur when sending power
+management requests. Once the VM sends the policy to the host, the VM no
+longer needs to worry about power management, because the host now
+manages the power for the VM based on the policy. The policy can specify
+power behavior that is based on incoming traffic rates or time-of-day
+power adjustment (busy/quiet hour power adjustment for example). See
+:ref:`sending_policy` for more information.
+
+One method of power management is to sense how busy a core is when
+processing packets and adjusting power accordingly. One technique for
+doing this is to monitor the ratio of the branch miss to branch hits
+counters and scale the core power accordingly. This technique is based
+on the premise that when a core is not processing packets, the ratio of
+branch misses to branch hits is very low, but when the core is
+processing packets, it is measurably higher. The implementation of this
+capability is as a policy of type ``BRANCH_RATIO``.
+See :ref:`sending_policy` for more information on using the
+BRANCH_RATIO policy option.
+
+A JSON interface enables the specification of power management requests
+and policies in JSON format. The JSON interfaces provide a more
+convenient and more easily interpreted interface for the specification
+of requests and policies. See :ref:`power_man_requests` for more information.
Performance Considerations
~~~~~~~~~~~~~~~~~~~~~~~~~~
-While Haswell Microarchitecture allows for independent power control for each core,
-earlier Microarchtectures do not offer such fine grained control.
-When deployed on pre-Haswell platforms greater care must be taken in selecting
-which cores are assigned to a VM, for instance a core will not scale down
-until its sibling is similarly scaled.
+While the Haswell microarchitecture allows for independent power control
+for each core, earlier microarchitectures do not offer such fine-grained
+control. When deploying on pre-Haswell platforms, greater care must be
+taken when selecting which cores are assigned to a VM, for example, a
+core does not scale down in frequency until all of its siblings are
+similarly scaled down.
Configuration
-------------
BIOS
~~~~
-Enhanced Intel SpeedStep® Technology must be enabled in the platform BIOS
-if the power management feature of DPDK is to be used.
-Otherwise, the sys file folder /sys/devices/system/cpu/cpu0/cpufreq will not exist,
-and the CPU frequency-based power management cannot be used.
-Consult the relevant BIOS documentation to determine how these settings
-can be accessed.
+To use the power management features of the DPDK, you must enable
+Enhanced Intel SpeedStep® Technology in the platform BIOS. Otherwise,
+the ``sys`` file folder ``/sys/devices/system/cpu/cpu0/cpufreq`` does not
+exist, and you cannot use CPU frequency-based power management. Refer to the
+relevant BIOS documentation to determine how to access these settings.
Host Operating System
~~~~~~~~~~~~~~~~~~~~~
-The DPDK Power Library can use either the *acpi_cpufreq* or *intel_pstate*
-kernel driver for the management of core frequencies. In many cases
-the *intel_pstate* driver is the default Power Management environment.
+The DPDK Power Management library can use either the ``acpi_cpufreq`` or
+the ``intel_pstate`` kernel driver for the management of core frequencies. In
+many cases, the ``intel_pstate`` driver is the default power management
+environment.
-Should the *acpi-cpufreq* driver be required, the *intel_pstate* module must
-be disabled, and *apci_cpufreq* module loaded in its place.
+Should the ``acpi-cpufreq driver`` be required, the ``intel_pstate``
+module must be disabled, and the ``acpi-cpufreq`` module loaded in its place.
-To disable *intel_pstate* driver, add the following to the grub Linux
-command line:
+To disable the ``intel_pstate`` driver, add the following to the ``grub``
+Linux command line:
-.. code-block:: console
-
- intel_pstate=disable
+ ``intel_pstate=disable``
-Upon rebooting, load the *acpi_cpufreq* module:
+On reboot, load the ``acpi_cpufreq`` module:
-.. code-block:: console
-
- modprobe acpi_cpufreq
+ ``modprobe acpi_cpufreq``
Hypervisor Channel Configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Virtio-Serial channels are configured via libvirt XML:
-
-
-.. code-block:: xml
+Configure ``virtio-serial`` channels using ``libvirt`` XML.
+The XML structure is as follows:
- <name>{vm_name}</name>
- <controller type='virtio-serial' index='0'>
- <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
- </controller>
- <channel type='unix'>
- <source mode='bind' path='/tmp/powermonitor/{vm_name}.{channel_num}'/>
- <target type='virtio' name='virtio.serial.port.poweragent.{vm_channel_num}'/>
- <address type='virtio-serial' controller='0' bus='0' port='{N}'/>
- </channel>
+.. code-block:: XML
+ <name>{vm_name}</name>
+ <controller type='virtio-serial' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
+ </controller>
+ <channel type='unix'>
+ <source mode='bind' path='/tmp/powermonitor/{vm_name}.{channel_num}'/>
+ <target type='virtio' name='virtio.serial.port.poweragent.{vm_channel_num}'/>
+ <address type='virtio-serial' controller='0' bus='0' port='{N}'/>
+ </channel>
-Where a single controller of type *virtio-serial* is created and up to 32 channels
-can be associated with a single controller and multiple controllers can be specified.
-The convention is to use the name of the VM in the host path *{vm_name}* and
-to increment *{channel_num}* for each channel, likewise the port value *{N}*
-must be incremented for each channel.
+Where a single controller of type ``virtio-serial`` is created, up to 32
+channels can be associated with a single controller, and multiple
+controllers can be specified. The convention is to use the name of the
+VM in the host path ``{vm_name}`` and to increment ``{channel_num}`` for each
+channel. Likewise, the port value ``{N}`` must be incremented for each
+channel.
-Each channel on the host will appear in *path*, the directory */tmp/powermonitor/*
-must first be created and given qemu permissions
+On the host, for each channel to appear in the path, ensure the creation
+of the ``/tmp/powermonitor/`` directory and the assignment of ``qemu``
+permissions:
.. code-block:: console
- mkdir /tmp/powermonitor/
- chown qemu:qemu /tmp/powermonitor
+ mkdir /tmp/powermonitor/
+ chown qemu:qemu /tmp/powermonitor
-Note that files and directories within /tmp are generally removed upon
-rebooting the host and the above steps may need to be carried out after each reboot.
+Note that files and directories in ``/tmp`` are generally removed when
+rebooting the host and you may need to perform the previous steps after
+each reboot.
-The serial device as it appears on a VM is configured with the *target* element attribute *name*
-and must be in the form of *virtio.serial.port.poweragent.{vm_channel_num}*,
-where *vm_channel_num* is typically the lcore channel to be used in DPDK VM applications.
+The serial device as it appears on a VM is configured with the target
+element attribute name and must be in the form:
+``virtio.serial.port.poweragent.{vm_channel_num}``, where
+``vm_channel_num`` is typically the lcore channel to be used in
+DPDK VM applications.
-Each channel on a VM will be present at */dev/virtio-ports/virtio.serial.port.poweragent.{vm_channel_num}*
+Each channel on a VM is present at:
+
+``/dev/virtio-ports/virtio.serial.port.poweragent.{vm_channel_num}``
Compiling and Running the Host Application
------------------------------------------
-Compiling
-~~~~~~~~~
+Compiling the Host Application
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-For information on compiling DPDK and the sample applications
+For information on compiling the DPDK and sample applications, see
see :doc:`compiling`.
-The application is located in the ``vm_power_manager`` sub-directory.
+The application is located in the ``vm_power_manager`` subdirectory.
To build just the ``vm_power_manager`` application using ``make``:
.. code-block:: console
- export RTE_SDK=/path/to/rte_sdk
- export RTE_TARGET=build
- cd ${RTE_SDK}/examples/vm_power_manager/
- make
+ export RTE_SDK=/path/to/rte_sdk
+ export RTE_TARGET=build
+ cd ${RTE_SDK}/examples/vm_power_manager/
+ make
-The resulting binary will be ${RTE_SDK}/build/examples/vm_power_manager
+The resulting binary is ``${RTE_SDK}/build/examples/vm_power_manager``.
-To build just the ``vm_power_manager`` application using ``meson/ninja``:
+To build just the ``vm_power_manager`` application using ``meson``/``ninja``:
.. code-block:: console
- export RTE_SDK=/path/to/rte_sdk
- cd ${RTE_SDK}
- meson build
- cd build
- ninja
- meson configure -Dexamples=vm_power_manager
- ninja
+ export RTE_SDK=/path/to/rte_sdk
+ cd ${RTE_SDK}
+ meson build
+ cd build
+ ninja
+ meson configure -Dexamples=vm_power_manager
+ ninja
-The resulting binary will be ${RTE_SDK}/build/examples/dpdk-vm_power_manager
+The resulting binary is ``${RTE_SDK}/build/examples/dpdk-vm_power_manager``.
-Running
-~~~~~~~
+Running the Host Application
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The application does not have any specific command line options other than *EAL*:
+The application does not have any specific command line options other
+than the EAL options:
.. code-block:: console
- ./build/vm_power_mgr [EAL options]
+ ./build/vm_power_mgr [EAL options]
-The application requires exactly two cores to run, one core is dedicated to the CLI,
-while the other is dedicated to the channel endpoint monitor, for example to run
-on cores 0 & 1 on a system with 4 memory channels:
+The application requires exactly two cores to run. One core for the CLI
+and the other for the channel endpoint monitor. For example, to run on
+cores 0 and 1 on a system with four memory channels, issue the command:
.. code-block:: console
- ./build/vm_power_mgr -l 0-1 -n 4
+ ./build/vm_power_mgr -l 0-1 -n 4
-After successful initialization the user is presented with VM Power Manager CLI:
+After successful initialization, the VM Power Manager CLI prompt appears:
.. code-block:: console
- vm_power>
+ vm_power>
-Virtual Machines can now be added to the VM Power Manager:
+Now, it is possible to add virtual machines to the VM Power Manager:
.. code-block:: console
- vm_power> add_vm {vm_name}
-
-When a {vm_name} is specified with the *add_vm* command a lookup is performed
-with libvirt to ensure that the VM exists, {vm_name} is used as an unique identifier
-to associate channels with a particular VM and for executing operations on a VM within the CLI.
-VMs do not have to be running in order to add them.
-
-A number of commands can be issued via the CLI in relation to VMs:
+ vm_power> add_vm {vm_name}
- Remove a Virtual Machine identified by {vm_name} from the VM Power Manager.
+When a ``{vm_name}`` is specified with the ``add_vm`` command, a lookup is
+performed with ``libvirt`` to ensure that the VM exists. ``{vm_name}`` is a
+unique identifier to associate channels with a particular VM and for
+executing operations on a VM within the CLI. VMs do not have to be
+running to add them.
- .. code-block:: console
-
- rm_vm {vm_name}
-
- Add communication channels for the specified VM, the virtio channels must be enabled
- in the VM configuration(qemu/libvirt) and the associated VM must be active.
- {list} is a comma-separated list of channel numbers to add, using the keyword 'all'
- will attempt to add all channels for the VM:
-
- .. code-block:: console
-
- add_channels {vm_name} {list}|all
-
- Enable or disable the communication channels in {list}(comma-separated)
- for the specified VM, alternatively list can be replaced with keyword 'all'.
- Disabled channels will still receive packets on the host, however the commands
- they specify will be ignored. Set status to 'enabled' to begin processing requests again:
-
- .. code-block:: console
-
- set_channel_status {vm_name} {list}|all enabled|disabled
-
- Print to the CLI the information on the specified VM, the information
- lists the number of vCPUS, the pinning to pCPU(s) as a bit mask, along with
- any communication channels associated with each VM, along with the status of each channel:
-
- .. code-block:: console
+It is possible to issue several commands from the CLI to manage VMs.
- show_vm {vm_name}
+Remove the virtual machine identified by ``{vm_name}`` from the VM Power
+Manager using the command:
- Set the binding of Virtual CPU on VM with name {vm_name} to the Physical CPU mask:
-
- .. code-block:: console
+.. code-block:: console
- set_pcpu_mask {vm_name} {vcpu} {pcpu}
+ rm_vm {vm_name}
- Set the binding of Virtual CPU on VM to the Physical CPU:
+Add communication channels for the specified VM using the following
+command. The ``virtio`` channels must be enabled in the VM configuration
+(``qemu/libvirt``) and the associated VM must be active. ``{list}`` is a
+comma-separated list of channel numbers to add. Specifying the keyword
+``all`` attempts to add all channels for the VM:
- .. code-block:: console
+.. code-block:: console
- set_pcpu {vm_name} {vcpu} {pcpu}
+ set_pcpu {vm_name} {vcpu} {pcpu}
Enable query of physical core information from a VM:
- .. code-block:: console
+.. code-block:: console
- set_query {vm_name} enable|disable
+ set_query {vm_name} enable|disable
Manual control and inspection can also be carried in relation CPU frequency scaling:
Get the current frequency for each core specified in the mask:
- .. code-block:: console
+.. code-block:: console
- show_cpu_freq_mask {mask}
+ show_cpu_freq_mask {mask}
Set the current frequency for the cores specified in {core_mask} by scaling each up/down/min/max:
- .. code-block:: console
-
- set_cpu_freq {core_mask} up|down|min|max
+.. code-block:: console
- Get the current frequency for the specified core:
+ add_channels {vm_name} {list}|all
- .. code-block:: console
+Enable or disable the communication channels in ``{list}`` (comma-separated)
+for the specified VM. Alternatively, replace ``list`` with the keyword
+``all``. Disabled channels receive packets on the host. However, the commands
+they specify are ignored. Set the status to enabled to begin processing
+requests again:
- show_cpu_freq {core_num}
+.. code-block:: console
- Set the current frequency for the specified core by scaling up/down/min/max:
+ set_channel_status {vm_name} {list}|all enabled|disabled
- .. code-block:: console
+Print to the CLI information on the specified VM. The information lists
+the number of vCPUs, the pinning to pCPU(s) as a bit mask, along with
+any communication channels associated with each VM, and the status of
+each channel:
- set_cpu_freq {core_num} up|down|min|max
+.. code-block:: console
-There are also some command line parameters for enabling the out-of-band
-monitoring of branch ratio on cores doing busy polling via PMDs.
+ show_vm {vm_name}
- .. code-block:: console
+Set the binding of a virtual CPU on a VM with name ``{vm_name}`` to the
+physical CPU mask:
- --core-list {list of cores}
+.. code-block:: console
- When this parameter is used, the list of cores specified will monitor the ratio
- between branch hits and branch misses. A tightly polling PMD thread will have a
- very low branch ratio, so the core frequency will be scaled down to the minimum
- allowed value. When packets are received, the code path will alter, causing the
- branch ratio to increase. When the ratio goes above the ratio threshold, the
- core frequency will be scaled up to the maximum allowed value.
+ set_pcpu_mask {vm_name} {vcpu} {pcpu}
+Set the binding of the virtual CPU on the VM to the physical CPU:
+
.. code-block:: console
- --branch-ratio {ratio}
-
- The branch ratio is a floating point number that specifies the threshold at which
- to scale up or down for the given workload. The default branch ratio is 0.01,
- and will need to be adjusted for different workloads.
-
-
-
-JSON API
-~~~~~~~~
-
-In addition to the command line interface for host command and a virtio-serial
-interface for VM power policies, there is also a JSON interface through which
-power commands and policies can be sent. This functionality adds a dependency
-on the Jansson library, and the Jansson development package must be installed
-on the system before the JSON parsing functionality is included in the app.
-This is achieved by:
-
- .. code-block:: javascript
-
- apt-get install libjansson-dev
+ set_pcpu {vm_name} {vcpu} {pcpu}
-The command and package name may be different depending on your operating
-system. It's worth noting that the app will successfully build without this
-package present, but a warning is shown during compilation, and the JSON
-parsing functionality will not be present in the app.
+It is also possible to perform manual control and inspection in relation
+to CPU frequency scaling.
-Sending a command or policy to the power manager application is achieved by
-simply opening a fifo file, writing a JSON string to that fifo, and closing
-the file. In actual implementation every core has own dedicated fifo[0..n],
-where n is number of the last available core.
-Having a dedicated fifo file per core allows using standard filesystem permissions
-to ensure a given container can only write JSON commands into fifos it is allowed
-to use.
+Get the current frequency for each core specified in the mask:
-The fifo is at /tmp/powermonitor/fifo[0..n]
-
-For example all cmds put to the /tmp/powermonitor/fifo7, will have
-effect only on CPU[7].
-
-The JSON string can be a policy or instruction, and takes the following
-format:
-
- .. code-block:: javascript
-
- {"packet_type": {
- "pair_1": value,
- "pair_2": value
- }}
-
-The 'packet_type' header can contain one of two values, depending on
-whether a policy or power command is being sent. The two possible values are
-"policy" and "instruction", and the expected name-value pairs is different
-depending on which type is being sent.
-
-The pairs are the format of standard JSON name-value pairs. The value type
-varies between the different name/value pairs, and may be integers, strings,
-arrays, etc. Examples of policies follow later in this document. The allowed
-names and value types are as follows:
-
-
-:Pair Name: "command"
-:Description: The type of packet we're sending to the power manager. We can be
- creating or destroying a policy, or sending a direct command to adjust
- the frequency of a core, similar to the command line interface.
-:Type: string
-:Values:
-
- :CREATE: used when creating a new policy,
- :DESTROY: used when removing a policy,
- :POWER: used when sending an immediate command, max, min, etc.
-:Required: yes
-:Example:
+.. code-block:: console
- .. code-block:: javascript
+ show_cpu_freq_mask {mask}
- "command", "CREATE"
+Set the current frequency for the cores specified in ``{core_mask}`` by
+scaling each up/down/min/max:
+.. code-block:: console
-:Pair Name: "policy_type"
-:Description: Type of policy to apply. Please see vm_power_manager documentation
- for more information on the types of policies that may be used.
-:Type: string
-:Values:
+ set_cpu_freq {core_mask} up|down|min|max
- :TIME: Time-of-day policy. Frequencies of the relevant cores are
- scaled up/down depending on busy and quiet hours.
- :TRAFFIC: This policy takes statistics from the NIC and scales up
- and down accordingly.
- :WORKLOAD: This policy looks at how heavily loaded the cores are,
- and scales up and down accordingly.
- :BRANCH_RATIO: This out-of-band policy can look at the ratio between
- branch hits and misses on a core, and is useful for detecting
- how much packet processing a core is doing.
-:Required: only for CREATE/DESTROY command
-:Example:
+Get the current frequency for the specified core:
- .. code-block:: javascript
+.. code-block:: console
- "policy_type", "TIME"
+ show_cpu_freq {core_num}
-:Pair Name: "busy_hours"
-:Description: The hours of the day in which we scale up the cores for busy
- times.
-:Type: array of integers
-:Values: array with list of hour numbers, (0-23)
-:Required: only for TIME policy
-:Example:
-
- .. code-block:: javascript
-
- "busy_hours":[ 17, 18, 19, 20, 21, 22, 23 ]
-
-:Pair Name: "quiet_hours"
-:Description: The hours of the day in which we scale down the cores for quiet
- times.
-:Type: array of integers
-:Values: array with list of hour numbers, (0-23)
-:Required: only for TIME policy
-:Example:
+Set the current frequency for the specified core by scaling up/down/min/max:
- .. code-block:: javascript
+.. code-block:: console
- "quiet_hours":[ 2, 3, 4, 5, 6 ]
+ set_cpu_freq {core_num} up|down|min|max
-:Pair Name: "avg_packet_thresh"
-:Description: Threshold below which the frequency will be set to min for
- the TRAFFIC policy. If the traffic rate is above this and below max, the
- frequency will be set to medium.
-:Type: integer
-:Values: The number of packets below which the TRAFFIC policy applies the
- minimum frequency, or medium frequency if between avg and max thresholds.
-:Required: only for TRAFFIC policy
-:Example:
+.. _enabling_out_of_band:
- .. code-block:: javascript
+Command Line Options for Enabling Out-of-band Branch Ratio Monitoring
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- "avg_packet_thresh": 100000
+There are a couple of command line parameters for enabling the out-of-band
+monitoring of branch ratios on cores doing busy polling using PMDs as
+described in the following table.
-:Pair Name: "max_packet_thresh"
-:Description: Threshold above which the frequency will be set to max for
- the TRAFFIC policy
-:Type: integer
-:Values: The number of packets per interval above which the TRAFFIC policy
- applies the maximum frequency
-:Required: only for TRAFFIC policy
-:Example:
+Table 1 – Command Line Options for Enabling Out-of-band Monitoring of
+Branch Ratios
- .. code-block:: javascript
+=============================== ==============================================
+**Command Line Option** **Description**
+=============================== ==============================================
+``--core-list {list of cores}`` | Specify the list of cores to monitor the ratio of branch misses
+ | to branch hits. A tightly-polling PMD thread has a very low
+ | branch ratio, therefore the core frequency scales down to the
+ | minimum allowed value. On receiving packets, the code path changes,
+ | causing the branch ratio to increase. When the ratio goes above
+ | the ratio threshold, the core frequency scales up to the maximum
+ | allowed value.
+``--branch-ratio {ratio}`` | Specify a floating-point number that identifies the threshold at which
+ | to scale up or down for the given workload. The default branch ratio
+ | is 0.01 and needs adjustment for different workloads.
+=============================== ==============================================
- "max_packet_thresh": 500000
-:Pair Name: "workload"
-:Description: When our policy is of type WORKLOAD, we need to specify how
- heavy our workload is.
-:Type: string
-:Values:
- :HIGH: For cores running workloads that require high frequencies
- :MEDIUM: For cores running workloads that require medium frequencies
- :LOW: For cores running workloads that require low frequencies
-:Required: only for WORKLOAD policy types
-:Example:
+Compiling and Running the Guest Applications
+--------------------------------------------
- .. code-block:: javascript
+It is possible to use the ``l3fwd-power`` application (for example) with the
+``vm_power_manager``.
- "workload", "MEDIUM"
+The distribution also provides a guest CLI for validating the setup.
-:Pair Name: "mac_list"
-:Description: When our policy is of type TRAFFIC, we need to specify the
- MAC addresses that the host needs to monitor
-:Type: string
-:Values: array with a list of mac address strings.
-:Required: only for TRAFFIC policy types
-:Example:
+For both ``l3fwd-power`` and the guest CLI, the host application must use
+the ``add_channels`` command to monitor the channels for the VM. To do this,
+issue the following commands in the host application:
- .. code-block:: javascript
+.. code-block:: console
- "mac_list":[ "de:ad:be:ef:01:01", "de:ad:be:ef:01:02" ]
+ vm_power> add_vm vmname
+ vm_power> add_channels vmname all
+ vm_power> set_channel_status vmname all enabled
+ vm_power> show_vm vmname
-:Pair Name: "unit"
-:Description: the type of power operation to apply in the command
-:Type: string
-:Values:
+Compiling the Guest Application
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- :SCALE_MAX: Scale frequency of this core to maximum
- :SCALE_MIN: Scale frequency of this core to minimum
- :SCALE_UP: Scale up frequency of this core
- :SCALE_DOWN: Scale down frequency of this core
- :ENABLE_TURBO: Enable Turbo Boost for this core
- :DISABLE_TURBO: Disable Turbo Boost for this core
-:Required: only for POWER instruction
-:Example:
+For information on compiling DPDK and the sample applications in general,
+see :doc:`compiling`.
- .. code-block:: javascript
+For compiling and running the ``l3fwd-power`` sample application, see
+:doc:`l3_forward_power_man`.
- "unit", "SCALE_MAX"
+The application is in the ``guest_cli`` subdirectory under ``vm_power_manager``.
-JSON API Examples
-~~~~~~~~~~~~~~~~~
+To build just the ``guest_vm_power_manager`` application using ``make``, issue
+the following commands:
-Profile create example:
+.. code-block:: console
- .. code-block:: javascript
+ export RTE_SDK=/path/to/rte_sdk
+ export RTE_TARGET=build
+ cd ${RTE_SDK}/examples/vm_power_manager/guest_cli/
+ make
- {"policy": {
- "command": "create",
- "policy_type": "TIME",
- "busy_hours":[ 17, 18, 19, 20, 21, 22, 23 ],
- "quiet_hours":[ 2, 3, 4, 5, 6 ]
- }}
+The resulting binary is ``${RTE_SDK}/build/examples/guest_cli``.
-Profile destroy example:
+**Note**: This sample application conditionally links in the Jansson JSON
+library. Consequently, if you are using a multilib or cross-compile
+environment, you may need to set the ``PKG_CONFIG_LIBDIR`` environmental
+variable to point to the relevant ``pkgconfig`` folder so that the correct
+library is linked in.
- .. code-block:: javascript
+For example, if you are building for a 32-bit target, you could find the
+correct directory using the following find command:
- {"policy": {
- "command": "destroy"
- }}
+.. code-block:: console
-Power command example:
+ # find /usr -type d -name pkgconfig
+ /usr/lib/i386-linux-gnu/pkgconfig
+ /usr/lib/x86_64-linux-gnu/pkgconfig
- .. code-block:: javascript
+Then use:
- {"instruction": {
- "command": "power",
- "unit": "SCALE_MAX"
- }}
+.. code-block:: console
-To send a JSON string to the Power Manager application, simply paste the
-example JSON string into a text file and cat it into the proper fifo:
+ export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig
- .. code-block:: console
+You then use the ``make`` command as normal, which should find the 32-bit
+version of the library, if it installed. If not, the application builds
+without the JSON interface functionality.
- cat file.json >/tmp/powermonitor/fifo[0..n]
+To build just the ``vm_power_manager`` application using ``meson``/``ninja``:
-The console of the Power Manager application should indicate the command that
-was just received via the fifo.
+.. code-block:: console
-Compiling and Running the Guest Applications
---------------------------------------------
+ export RTE_SDK=/path/to/rte_sdk
+ cd ${RTE_SDK}
+ meson build
+ cd build
+ ninja
+ meson configure -Dexamples=vm_power_manager/guest_cli
+ ninja
-l3fwd-power is one sample application that can be used with vm_power_manager.
+The resulting binary is ``${RTE_SDK}/build/examples/guest_cli``.
-A guest CLI is also provided for validating the setup.
+Running the Guest Application
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-For both l3fwd-power and guest CLI, the channels for the VM must be monitored by the
-host application using the *add_channels* command on the host. This typically uses
-the following commands in the host application:
+The standard EAL command line parameters are necessary:
.. code-block:: console
- vm_power> add_vm vmname
- vm_power> add_channels vmname all
- vm_power> set_channel_status vmname all enabled
- vm_power> show_vm vmname
-
+ ./build/vm_power_mgr [EAL options] -- [guest options]
-Compiling
-~~~~~~~~~
+The guest example uses a channel for each lcore enabled. For example, to
+run on cores 0, 1, 2 and 3:
-For information on compiling DPDK and the sample applications
-see :doc:`compiling`.
+.. code-block:: console
-For compiling and running l3fwd-power, see :doc:`l3_forward_power_man`.
+ ./build/guest_vm_power_mgr -l 0-3
-The application is located in the ``guest_cli`` sub-directory under ``vm_power_manager``.
+.. _sending_policy:
-To build just the ``guest_vm_power_manager`` application using ``make``:
+Command Line Options Available When Sending a Policy to the Host
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-.. code-block:: console
+Optionally, there are several command line options for a user who needs
+to send a power policy to the host application. The following table
+describes these options.
- export RTE_SDK=/path/to/rte_sdk
- export RTE_TARGET=build
- cd ${RTE_SDK}/examples/vm_power_manager/guest_cli/
- make
+Table 1 – Command Line Options Available When Sending a Policy to the Host
-The resulting binary will be ${RTE_SDK}/build/examples/guest_cli
+======================================= ======================================
+**Command Line Option** **Description**
+======================================= ======================================
+``--vm-name {name of guest vm}`` | Allows the user to change the virtual machine name passed
+ | down to the host application using the power policy. The
+ | default is ubuntu2.
+``--vcpu-list {list vm cores}`` | A comma-separated list of cores in the VM that the user
+ | wants the host application to monitor. The list of cores
+ | in any vm starts at zero, and the host application maps
+ | these to the physical cores once the policy passes down
+ | to the host. Valid syntax includes individual cores
+ | 2,3,4, a range of cores 2-4, or a combination of both
+ | 1,3,5-7.
+``--busy-hours {list of busy hours}`` | A comma-separated list of hours in which to set the core
+ | frequency to the maximum. Valid syntax includes
+ | individual hours 2,3,4, a range of hours 2-4, or a
+ | combination of both 1,3,5-7. Valid hour values are 0 to 23.
+``--quiet-hours {list of quiet hours}`` | A comma-separated list of hours in which to set the core
+ | frequency to minimum. Valid syntax includes individual
+ | hours 2,3,4, a range of hours 2-4, or a combination of
+ | both 1,3,5-7. Valid hour values are 0 to 23.
+``--policy {policy type}`` | The type of policy. This can be one of the following values:
-.. Note::
- This sample application conditionally links in the Jansson JSON
- library, so if you are using a multilib or cross compile environment you
- may need to set the ``PKG_CONFIG_LIBDIR`` environmental variable to point to
- the relevant pkgconfig folder so that the correct library is linked in.
+ - | TRAFFIC Based on incoming traffic rates on the NIC.
- For example, if you are building for a 32-bit target, you could find the
- correct directory using the following ``find`` command:
+ - | TIME - Uses a busy/quiet hours policy.
- .. code-block:: console
+ - | BRANCH_RATIO - Uses branch ratio counters to determine
+ | core busyness.
- # find /usr -type d -name pkgconfig
- /usr/lib/i386-linux-gnu/pkgconfig
- /usr/lib/x86_64-linux-gnu/pkgconfig
+ - | WORKLOAD - Sets the frequency to low, medium or high
+ | based on the received policy setting.
- Then use:
+ | **Note**: Not all policy types need all parameters. For
+ | example, BRANCH_RATIO only needs the vcpu-list
+ | parameter.
+======================================= ======================================
- .. code-block:: console
+After successful initialization, the VM Power Manager Guest CLI prompt
+appears:
- export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig
+.. code-block:: console
- You then use the make command as normal, which should find the 32-bit
- version of the library, if it installed. If not, the application will
- be built without the JSON interface functionality.
+ vm_power(guest)>
-To build just the ``vm_power_manager`` application using ``meson/ninja``:
+To change the frequency of an lcore, use a ``set_cpu_freq`` command similar
+to the following:
.. code-block:: console
- export RTE_SDK=/path/to/rte_sdk
- cd ${RTE_SDK}
- meson build
- cd build
- ninja
- meson configure -Dexamples=vm_power_manager/guest_cli
- ninja
-
-The resulting binary will be ${RTE_SDK}/build/examples/guest_cli
+ set_cpu_freq {core_num} up|down|min|max
-Running
-~~~~~~~
+where, ``{core_num}`` is the lcore and channel to change frequency by
+scaling up/down/min/max.
-The standard *EAL* command line parameters are required:
+To start an application, configure the power policy, and send it to the
+host, use a command like the following:
.. code-block:: console
- ./build/guest_vm_power_mgr [EAL options] -- [guest options]
+ ./build/guest_vm_power_mgr -l 0-3 -n 4 -- --vm-name=ubuntu --policy=BRANCH_RATIO --vcpu-list=2-4
-The guest example uses a channel for each lcore enabled. For example,
-to run on cores 0,1,2,3:
+Once the VM Power Manager Guest CLI appears, issuing the 'send_policy now' command
+will send the policy to the host:
.. code-block:: console
- ./build/guest_vm_power_mgr -l 0-3
-
-Optionally, there is a list of command line parameter should the user wish to send a power
-policy down to the host application. These parameters are as follows:
+ send_policy now
- .. code-block:: console
+Once the policy is sent to the host, the host application takes over the power monitoring
+of the specified cores in the policy.
- --vm-name {name of guest vm}
+.. _power_man_requests:
- This parameter allows the user to change the Virtual Machine name passed down to the
- host application via the power policy. The default is "ubuntu2"
+JSON Interface for Power Management Requests and Policies
+---------------------------------------------------------
- .. code-block:: console
+In addition to the command line interface for the host command, and a
+``virtio-serial`` interface for VM power policies, there is also a JSON
+interface through which power commands and policies can be sent.
- --vcpu-list {list vm cores}
+**Note**: This functionality adds a dependency on the Jansson library.
+Install the Jansson development package on the system to avail of the
+JSON parsing functionality in the app. Issue the ``apt-get install
+libjansson-dev`` command to install the development package. The command
+and package name may be different depending on your operating system. It
+is worth noting that the app builds successfully if this package is not
+present, but a warning displays during compilation, and the JSON parsing
+functionality is not present in the app.
- A comma-separated list of cores in the VM that the user wants the host application to
- monitor. The list of cores in any vm starts at zero, and these are mapped to the
- physical cores by the host application once the policy is passed down.
- Valid syntax includes individual cores '2,3,4', or a range of cores '2-4', or a
- combination of both '1,3,5-7'
+Send a request or policy to the VM Power Manager by simply opening a
+fifo file at ``/tmp/powermonitor/fifo``, writing a JSON string to that file,
+and closing the file.
- .. code-block:: console
+The JSON string can be a power management request or a policy, and takes
+the following format:
- --busy-hours {list of busy hours}
+.. code-block:: javascript
- A comma-separated list of hours within which to set the core frequency to maximum.
- Valid syntax includes individual hours '2,3,4', or a range of hours '2-4', or a
- combination of both '1,3,5-7'. Valid hours are 0 to 23.
+ {"packet_type": {
+ "pair_1": value,
+ "pair_2": value
+ }}
- .. code-block:: console
+The ``packet_type`` header can contain one of two values, depending on
+whether a power management request or policy is being sent. The two
+possible values are ``instruction`` and ``policy`` and the expected name-value
+pairs are different depending on which type is sent.
- --quiet-hours {list of quiet hours}
+The pairs are in the format of standard JSON name-value pairs. The value
+type varies between the different name-value pairs, and may be integers,
+strings, arrays, and so on. See :ref:`json_interface_ex`
+for examples of policies and instructions and
+:ref:`json_name_value_pair` for the supported names and value types.
- A comma-separated list of hours within which to set the core frequency to minimum.
- Valid syntax includes individual hours '2,3,4', or a range of hours '2-4', or a
- combination of both '1,3,5-7'. Valid hours are 0 to 23.
+.. _json_interface_ex:
- .. code-block:: console
+JSON Interface Examples
+~~~~~~~~~~~~~~~~~~~~~~~
- --policy {policy type}
+The following is an example JSON string that creates a time-profile
+policy.
- The type of policy. This can be one of the following values:
- TRAFFIC - based on incoming traffic rates on the NIC.
- TIME - busy/quiet hours policy.
- BRANCH_RATIO - uses branch ratio counters to determine core busyness.
- Not all parameters are needed for all policy types. For example, BRANCH_RATIO
- only needs the vcpu-list parameter, not any of the hours.
+.. code-block:: JSON
+ {"policy": {
+ "name": "ubuntu",
+ "command": "create",
+ "policy_type": "TIME",
+ "busy_hours":[ 17, 18, 19, 20, 21, 22, 23 ],
+ "quiet_hours":[ 2, 3, 4, 5, 6 ],
+ "core_list":[ 11 ]
+ }}
-After successful initialization the user is presented with VM Power Manager Guest CLI:
+The following is an example JSON string that removes the named policy.
-.. code-block:: console
+.. code-block:: JSON
- vm_power(guest)>
+ {"policy": {
+ "name": "ubuntu",
+ "command": "destroy",
+ }}
-To change the frequency of a lcore, use the set_cpu_freq command.
-Where {core_num} is the lcore and channel to change frequency by scaling up/down/min/max.
+The following is an example JSON string for a power management request.
-.. code-block:: console
+.. code-block:: JSON
- set_cpu_freq {core_num} up|down|min|max
+ {"instruction": {
+ "name": "ubuntu",
+ "command": "power",
+ "unit": "SCALE_MAX",
+ "resource_id": 10
+ }}
To query the available frequences of an lcore, use the query_cpu_freq command.
Where {core_num} is the lcore to query.
Once the policy is sent to the host, the host application takes over the power monitoring
of the specified cores in the policy.
+
+.. _json_name_value_pair:
+
+JSON Name-value Pairs
+~~~~~~~~~~~~~~~~~~~~~
+
+The following are the name-value pairs supported by the JSON interface:
+
+- `avg_packet_thresh`_
+- `busy_hours`_
+- `command`_
+- `core_list`_
+- `mac_list`_
+- `max_packet_thresh`_
+- `name`_
+- `policy_type`_
+- `quiet_hours`_
+- `resource_id`_
+- `unit`_
+- `workload`_
+
+avg_packet_thresh
+^^^^^^^^^^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "avg_packet_thresh"
+================== ===========================================================
+ **Description:** | The threshold below which the frequency is set to the minimum value for the
+ | TRAFFIC policy. If the traffic rate is above this value and below the
+ | maximum value, the frequency is set to medium.
+ **Type:** integer
+ **Values:** | The number of packets below which the TRAFFIC policy applies the minimum
+ | frequency, or the medium frequency if between the average and maximum
+ | thresholds.
+ **Required:** Yes
+ **Example:** ``"avg_packet_thresh": 100000``
+================== ===========================================================
+
+busy_hours
+^^^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "busy_hours"
+================== ===========================================================
+ **Description:** The hours of the day in which we scale up the cores for busy times.
+ **Type:** array of integers
+ **Values:** An array with a list of hour values (0-23).
+ **Required:** For the TIME policy only.
+ **Example:** ``"busy_hours":[ 17, 18, 19, 20, 21, 22, 23 ]``
+================== ===========================================================
+
+command
+^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "command"
+================== ===========================================================
+ **Description:** | The type of packet to send to the VM Power Manager. It is possible to create
+ | or destroy a policy or send a direct command to adjust the frequency of a core,
+ | as is possible on the command line interface.
+ **Type:** | string
+ **Values:** Possible values are:
+
+ - CREATE: Create a new policy.
+ - DESTROY: Remove an existing policy.
+ - POWER: Send an immediate command, max, min, and so on.
+
+ **Required:** Yes
+ **Example:** ``"command": "CREATE"``
+================== ===========================================================
+
+core_list
+^^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "core_list"
+================== ===========================================================
+ **Description:** The cores to which to apply a policy.
+ **Type:** array of integers
+ **Values:** An array with a list of virtual CPUs.
+ **Required:** For CREATE/DESTROY policy requests only.
+ **Example:** ``"core_list":[ 10, 11 ]``
+================== ===========================================================
+
+mac_list
+^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "mac_list"
+================== ===========================================================
+ **Description:** | When the policy is of type TRAFFIC, it is necessary to specify the MAC addresses
+ | that the host must monitor.
+ **Type:** | array of strings
+ **Values:** An array with a list of mac address strings.
+ **Required:** For TRAFFIC policy types only.
+ **Example:** ``"mac_list":[ "de:ad:be:ef:01:01","de:ad:be:ef:01:02" ]``
+================== ===========================================================
+
+
+max_packet_thresh
+^^^^^^^^^^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "max_packet_thresh"
+================== ===========================================================
+ **Description:** | In a policy of type TRAFFIC, the threshold value above which the frequency is set
+ | to a maximum.
+ **Type:** | integer
+ **Values:** | The number of packets per interval above which the TRAFFIC
+ | policy applies the maximum frequency.
+ **Required:** For the TRAFFIC policy only.
+ **Example:** ``"max_packet_thresh": 500000``
+================== ===========================================================
+
+name
+^^^^
+
+================== ===========================================================
+ **Pair Name:** "name"
+================== ===========================================================
+ **Description:** | The name of the VM or host. Allows the parser to associate the policy with the
+ | relevant VM or host OS.
+ **Type:** | string
+ **Values:** Any valid string.
+ **Required:** Yes
+ **Example:** ``"name": "ubuntu2"``
+================== ===========================================================
+
+policy_type
+^^^^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "policy_type"
+================== ===========================================================
+ **Description:** | The type of policy to apply. See the ``--policy`` option description for more
+ | information.
+ **Type:** string
+ **Values:** Possible values are:
+
+ - | TIME: Time-of-day policy. Scale the frequencies of the relevant cores up/down
+ | depending on busy and quiet hours.
+ - | TRAFFIC: Use statistics from the NIC and scale up and down accordingly.
+ - | WORKLOAD: Determine how heavily loaded the cores are and scale up and down
+ | accordingly.
+ - | BRANCH_RATIO: An out-of-band policy that looks at the ratio between branch
+ | hits and misses on a core and uses that information to determine how much
+ | packet processing a core is doing.
+
+ **Required:** For ``CREATE`` and ``DESTROY`` policy requests only.
+ **Example:** ``"policy_type": "TIME"``
+================== ===========================================================
+
+quiet_hours
+^^^^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "quiet_hours"
+================== ===========================================================
+ **Description:** | The hours of the day to scale down the cores for quiet times.
+ **Type:** array of integers
+ **Values:** | An array with a list of hour numbers with values in the range 0 to 23.
+ **Required:** For the TIME policy only.
+ **Example:** ``"quiet_hours":[ 2, 3, 4, 5, 6 ]``
+================== ===========================================================
+
+resource_id
+^^^^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "resource_id"
+================== ===========================================================
+ **Description:** The core to which to apply a power command.
+ **Type:** integer
+ **Values:** A valid core ID for the VM or host OS.
+ **Required:** For the ``POWER`` instruction only.
+ **Example:** ``"resource_id": 10``
+================== ===========================================================
+
+unit
+^^^^
+
+================== ===========================================================
+ **Pair Name:** "unit"
+================== ===========================================================
+ **Description:** The type of power operation to apply in the command.
+ **Type:** string
+ **Values:** - SCALE_MAX: Scale the frequency of this core to the maximum.
+ - SCALE_MIN: Scale the frequency of this core to the minimum.
+ - SCALE_UP: Scale up the frequency of this core.
+ - SCALE_DOWN: Scale down the frequency of this core.
+ - ENABLE_TURBO: Enable Intel® Turbo Boost Technology for this core.
+ - DISABLE_TURBO: Disable Intel® Turbo Boost Technology for this core.
+ **Required:** For the ``POWER`` instruction only.
+ **Example:** ``"unit": "SCALE_MAX"``
+================== ===========================================================
+
+workload
+^^^^^^^^
+
+================== ===========================================================
+ **Pair Name:** "workload"
+================== ===========================================================
+ **Description:** In a policy of type WORKLOAD, it is necessary to specify
+ how heavy the workload is.
+ **Type:** string
+ **Values:** - HIGH: Scale the frequency of this core to maximum.
+ - MEDIUM: Scale the frequency of this core to minimum.
+ - LOW: Scale up the frequency of this core.
+ **Required:** For the ``WORKLOAD`` policy only.
+ **Example:** ``"workload": "MEDIUM"``
+================== ===========================================================
+