Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/64262/?format=api
http://patches.dpdk.org/api/patches/64262/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200107091343.22965-1-david.hunt@intel.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20200107091343.22965-1-david.hunt@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20200107091343.22965-1-david.hunt@intel.com", "date": "2020-01-07T09:13:43", "name": "[v1] doc: rework vm power manager user guide", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "4b0a95cdd8a73feb955fb8eb33ea90ef1b1075c7", "submitter": { "id": 342, "url": "http://patches.dpdk.org/api/people/342/?format=api", "name": "Hunt, David", "email": "david.hunt@intel.com" }, "delegate": { "id": 1, "url": "http://patches.dpdk.org/api/users/1/?format=api", "username": "tmonjalo", "first_name": "Thomas", "last_name": "Monjalon", "email": "thomas@monjalon.net" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20200107091343.22965-1-david.hunt@intel.com/mbox/", "series": [ { "id": 8001, "url": "http://patches.dpdk.org/api/series/8001/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8001", "date": "2020-01-07T09:13:43", "name": "[v1] doc: rework vm power manager user guide", "version": 1, "mbox": "http://patches.dpdk.org/series/8001/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/64262/comments/", "check": "success", "checks": "http://patches.dpdk.org/api/patches/64262/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 69554A04F6;\n\tTue, 7 Jan 2020 10:14:15 +0100 (CET)", "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id AF6B91D646;\n\tTue, 7 Jan 2020 10:14:14 +0100 (CET)", "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by dpdk.org (Postfix) with ESMTP id 4513B1C11F\n for <dev@dpdk.org>; Tue, 7 Jan 2020 10:14:12 +0100 (CET)", "from orsmga003.jf.intel.com ([10.7.209.27])\n by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n 07 Jan 2020 01:14:09 -0800", "from silpixa00399952.ir.intel.com (HELO\n silpixa00399952.ger.corp.intel.com) ([10.237.222.38])\n by orsmga003.jf.intel.com with ESMTP; 07 Jan 2020 01:14:05 -0800" ], "X-Amp-Result": "SKIPPED(no attachment in message)", "X-Amp-File-Uploaded": "False", "X-ExtLoop1": "1", "X-IronPort-AV": "E=Sophos;i=\"5.69,405,1571727600\";\n d=\"scan'208,217\";a=\"223120375\"", "From": "David Hunt <david.hunt@intel.com>", "To": "dev@dpdk.org", "Cc": "john.mcnamara@intel.com, marko.kovacevic@intel.com,\n David Hunt <david.hunt@intel.com>", "Date": "Tue, 7 Jan 2020 09:13:43 +0000", "Message-Id": "<20200107091343.22965-1-david.hunt@intel.com>", "X-Mailer": "git-send-email 2.17.1", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "Subject": "[dpdk-dev] [PATCH v1] doc: rework vm power manager user guide", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.15", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org", "Sender": "\"dev\" <dev-bounces@dpdk.org>" }, "content": "Review and re-work of vm_power_manager documentation. Hopefully this\nis clearer, easier to follow.\n\nSigned-off-by: David Hunt <david.hunt@intel.com>\n---\n .../img/vm_power_mgr_highlevel.svg | 2189 +++++++++++------\n .../img/vm_power_mgr_vm_request_seq.svg | 1455 +++++------\n .../sample_app_ug/vm_power_management.rst | 1194 +++++----\n 3 files changed, 2775 insertions(+), 2063 deletions(-)", "diff": "diff --git a/doc/guides/sample_app_ug/img/vm_power_mgr_highlevel.svg b/doc/guides/sample_app_ug/img/vm_power_mgr_highlevel.svg\nindex 92f882674..c251bcda6 100644\n--- a/doc/guides/sample_app_ug/img/vm_power_mgr_highlevel.svg\n+++ b/doc/guides/sample_app_ug/img/vm_power_mgr_highlevel.svg\n@@ -1,710 +1,1491 @@\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n-<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n-<!-- Generated by Microsoft Visio, SVG Export vm_power_mgr_highlevel.svg Page-1 -->\n+<!-- Created with Inkscape (http://www.inkscape.org/) -->\n \n <!-- SPDX-License-Identifier: BSD-3-Clause -->\n <!-- Copyright(c) 2014 Intel Corporation -->\n \n-<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\"\n-\t\twidth=\"7.96928in\" height=\"6.37479in\" viewBox=\"0 0 573.788 458.985\" xml:space=\"preserve\" color-interpolation-filters=\"sRGB\"\n-\t\tclass=\"st28\">\n-\t<style type=\"text/css\">\n-\t<![CDATA[\n-\t\t.st1 {visibility:visible}\n-\t\t.st2 {fill:#464646;fill-opacity:0.5;stroke:#464646;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.5}\n-\t\t.st3 {fill:url(#grad0-6);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st4 {fill:#000000;font-family:Calibri;font-size:1.00001em;font-weight:bold}\n-\t\t.st5 {fill:#464646;fill-opacity:0.5}\n-\t\t.st6 {stroke:#464646;stroke-linecap:butt;stroke-opacity:0.5;stroke-width:0.25}\n-\t\t.st7 {fill:url(#grad0-15)}\n-\t\t.st8 {stroke:#1f497d;stroke-linecap:butt;stroke-width:0.25}\n-\t\t.st9 {fill:#464646;fill-opacity:0.5;stroke:#464646;stroke-linecap:butt;stroke-opacity:0.5;visibility:hidden}\n-\t\t.st10 {fill:url(#grad0-15);stroke:#1f497d;stroke-linecap:butt;stroke-width:0.25;visibility:hidden}\n-\t\t.st11 {fill:#000000;font-family:Arial;font-size:0.666664em;font-weight:bold}\n-\t\t.st12 {fill:url(#grad0-15);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st13 {fill:#000000;font-family:Arial;font-size:0.666664em}\n-\t\t.st14 {font-size:1em}\n-\t\t.st15 {fill:url(#grad0-196);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st16 {fill:url(#grad0-229);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st17 {font-family:Symbol;font-size:1em;font-weight:normal}\n-\t\t.st18 {font-size:1em;font-weight:normal}\n-\t\t.st19 {fill:url(#grad0-282);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st20 {fill:url(#grad0-344);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st21 {fill:url(#grad0-357);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st22 {fill:url(#grad0-418);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st23 {fill:url(#grad0-431);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.25}\n-\t\t.st24 {marker-end:url(#mrkr5-440);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}\n-\t\t.st25 {fill:#1f497d;fill-opacity:1;stroke:#1f497d;stroke-opacity:1;stroke-width:0.28409090909091}\n-\t\t.st26 {marker-end:url(#mrkr5-440);marker-start:url(#mrkr5-460);stroke:#1f497d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1}\n-\t\t.st27 {fill:#ffffff;stroke:none;stroke-linecap:butt;stroke-width:7.2}\n-\t\t.st28 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}\n-\t]]>\n-\t</style>\n-\n-\t<defs id=\"Patterns_And_Gradients\">\n-\t\t<linearGradient id=\"grad0-6\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#bdd194\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#a5c06b\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-15\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#b6c8de\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#9ab3d1\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-196\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#e9f4f8\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#e1f1f5\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-229\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#ffffff\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#ffffff\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-282\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#dc9e9c\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#ce7977\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-344\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#b6cc88\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#a5c06b\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-357\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#fab781\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#f89c52\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-418\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#acc8ea\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#8db3e2\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-431\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#e2e2e2\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#d8d8d8\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t\t<linearGradient id=\"grad0-437\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\" gradientTransform=\"rotate(90 0.5 0.5)\">\n-\t\t\t<stop offset=\"0\" stop-color=\"#c4d2e3\" stop-opacity=\"1\"/>\n-\t\t\t<stop offset=\"1\" stop-color=\"#9ab3d1\" stop-opacity=\"1\"/>\n-\t\t</linearGradient>\n-\t</defs>\n-\t<defs id=\"Markers\">\n-\t\t<g id=\"lend5\">\n-\t\t\t<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\"/>\n-\t\t</g>\n-\t\t<marker id=\"mrkr5-440\" class=\"st25\" refX=\"-6.16\" orient=\"auto\" markerUnits=\"strokeWidth\" overflow=\"visible\">\n-\t\t\t<use xlink:href=\"#lend5\" transform=\"scale(-3.52,-3.52) \"/>\n-\t\t</marker>\n-\t\t<marker id=\"mrkr5-460\" class=\"st25\" refX=\"5.8\" orient=\"auto\" markerUnits=\"strokeWidth\" overflow=\"visible\">\n-\t\t\t<use xlink:href=\"#lend5\" transform=\"scale(3.52) \"/>\n-\t\t</marker>\n-\t</defs>\n-\t<g>\n-\t\t<title>Page-1</title>\n-\t\t<g id=\"shape1-1\" transform=\"translate(18.3,-19.74)\">\n-\t\t\t<title>Box</title>\n-\t\t\t<desc>Host</desc>\n-\t\t\t<g id=\"shadow1-2\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"239.3\" width=\"405.354\" height=\"219.685\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"239.3\" width=\"405.354\" height=\"219.685\" class=\"st3\"/>\n-\t\t\t<text x=\"191.19\" y=\"451.39\" class=\"st4\">Host</text>\t\t</g>\n-\t\t<g id=\"group59-8\" transform=\"translate(585.399,54.9035) rotate(76.5904)\">\n-\t\t\t<title>1-D single.59</title>\n-\t\t\t<g id=\"shape63-9\">\n-\t\t\t\t<title>Sheet.63</title>\n-\t\t\t\t<g id=\"shadow63-10\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t L0 456.15 Z\" class=\"st5\"/>\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"\n-\t\t\t\t\t\t\tclass=\"st6\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\n-\t\t\t\t\t\t\t Z\" class=\"st7\"/>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape64-17\">\n-\t\t\t\t<title>Sheet.64</title>\n-\t\t\t\t<g id=\"shadow64-18\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape65-24\" transform=\"translate(-2.82107,-2.88265)\">\n-\t\t\t\t<title>Sheet.65</title>\n-\t\t\t\t<g id=\"shadow65-25\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.24186\" height=\"5.57329\" rx=\"0.620928\" ry=\"0.620928\" class=\"st9\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.24186\" height=\"5.57329\" rx=\"0.620928\" ry=\"0.620928\" class=\"st10\"/>\n-\t\t\t</g>\n-\t\t</g>\n-\t\t<g id=\"group54-29\" transform=\"translate(656.289,-75.8304) rotate(58.6472)\">\n-\t\t\t<title>1-D single.54</title>\n-\t\t\t<g id=\"shape56-30\">\n-\t\t\t\t<title>Sheet.56</title>\n-\t\t\t\t<g id=\"shadow56-31\" transform=\"matrix(1,0,0,1,1.97897,-0.480491)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t L0 456.15 Z\" class=\"st5\"/>\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"\n-\t\t\t\t\t\t\tclass=\"st6\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\n-\t\t\t\t\t\t\t Z\" class=\"st7\"/>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape57-37\">\n-\t\t\t\t<title>Sheet.57</title>\n-\t\t\t\t<g id=\"shadow57-38\" transform=\"matrix(1,0,0,1,1.97897,-0.480491)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape58-44\" transform=\"translate(-3.21337,-2.88265)\">\n-\t\t\t\t<title>Sheet.58</title>\n-\t\t\t\t<g id=\"shadow58-45\" transform=\"matrix(1,0,0,1,1.97897,-0.480491)\" class=\"st1\">\n-\t\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.41455\" height=\"5.57329\" rx=\"0.707276\" ry=\"0.707276\" class=\"st9\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.41455\" height=\"5.57329\" rx=\"0.707276\" ry=\"0.707276\" class=\"st10\"/>\n-\t\t\t</g>\n-\t\t</g>\n-\t\t<g id=\"shape10-49\" transform=\"translate(18.3,-298.953)\">\n-\t\t\t<title>Box.10</title>\n-\t\t\t<desc>VM 0</desc>\n-\t\t\t<g id=\"shadow10-50\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"317.253\" width=\"201.26\" height=\"141.732\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"317.253\" width=\"201.26\" height=\"141.732\" class=\"st3\"/>\n-\t\t\t<text x=\"91.29\" y=\"414.52\" class=\"st11\">VM 0</text>\t\t</g>\n-\t\t<g id=\"shape2-55\" transform=\"translate(18.3,-48.7951)\">\n-\t\t\t<title>Box.2</title>\n-\t\t\t<desc>Core 0</desc>\n-\t\t\t<g id=\"shadow2-56\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 0</text>\t\t</g>\n-\t\t<g id=\"shape3-61\" transform=\"translate(69.3236,-48.7951)\">\n-\t\t\t<title>Box.3</title>\n-\t\t\t<desc>Core 1</desc>\n-\t\t\t<g id=\"shadow3-62\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 1</text>\t\t</g>\n-\t\t<g id=\"shape4-67\" transform=\"translate(120.347,-48.7951)\">\n-\t\t\t<title>Box.4</title>\n-\t\t\t<desc>Core 2</desc>\n-\t\t\t<g id=\"shadow4-68\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 2</text>\t\t</g>\n-\t\t<g id=\"shape5-73\" transform=\"translate(171.371,-48.7951)\">\n-\t\t\t<title>Box.5</title>\n-\t\t\t<desc>Core 3</desc>\n-\t\t\t<g id=\"shadow5-74\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 3</text>\t\t</g>\n-\t\t<g id=\"shape6-79\" transform=\"translate(222.394,-48.7951)\">\n-\t\t\t<title>Box.6</title>\n-\t\t\t<desc>Core 4</desc>\n-\t\t\t<g id=\"shadow6-80\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 4</text>\t\t</g>\n-\t\t<g id=\"shape7-85\" transform=\"translate(273.418,-48.7951)\">\n-\t\t\t<title>Box.7</title>\n-\t\t\t<desc>Core 5</desc>\n-\t\t\t<g id=\"shadow7-86\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 5</text>\t\t</g>\n-\t\t<g id=\"shape8-91\" transform=\"translate(324.442,-48.7951)\">\n-\t\t\t<title>Box.8</title>\n-\t\t\t<desc>Core 6</desc>\n-\t\t\t<g id=\"shadow8-92\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 6</text>\t\t</g>\n-\t\t<g id=\"shape9-97\" transform=\"translate(375.465,-48.7951)\">\n-\t\t\t<title>Box.9</title>\n-\t\t\t<desc>Core 7</desc>\n-\t\t\t<g id=\"shadow9-98\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.09\" y=\"443.31\" class=\"st13\">Core 7</text>\t\t</g>\n-\t\t<g id=\"shape11-103\" transform=\"translate(18.3,-298.953)\">\n-\t\t\t<title>Box.11</title>\n-\t\t\t<desc>Virtual Core 0</desc>\n-\t\t\t<g id=\"shadow11-104\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.76\" y=\"438.51\" class=\"st13\">Virtual <tspan x=\"12.09\" dy=\"1.2em\" class=\"st14\">Core </tspan>0</text>\t\t</g>\n-\t\t<g id=\"shape12-110\" transform=\"translate(69.3236,-298.953)\">\n-\t\t\t<title>Box.12</title>\n-\t\t\t<desc>Virtual Core 1</desc>\n-\t\t\t<g id=\"shadow12-111\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.76\" y=\"438.51\" class=\"st13\">Virtual <tspan x=\"12.09\" dy=\"1.2em\" class=\"st14\">Core </tspan>1</text>\t\t</g>\n-\t\t<g id=\"shape13-117\" transform=\"translate(120.347,-298.953)\">\n-\t\t\t<title>Box.13</title>\n-\t\t\t<desc>Virtual Core 2</desc>\n-\t\t\t<g id=\"shadow13-118\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.76\" y=\"438.51\" class=\"st13\">Virtual <tspan x=\"12.09\" dy=\"1.2em\" class=\"st14\">Core </tspan>2</text>\t\t</g>\n-\t\t<g id=\"shape14-124\" transform=\"translate(171.371,-298.953)\">\n-\t\t\t<title>Box.14</title>\n-\t\t\t<desc>Virtual Core 3</desc>\n-\t\t\t<g id=\"shadow14-125\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.76\" y=\"438.51\" class=\"st13\">Virtual <tspan x=\"12.09\" dy=\"1.2em\" class=\"st14\">Core </tspan>3</text>\t\t</g>\n-\t\t<g id=\"group16-131\" transform=\"translate(333.737,-187.264) rotate(39.9929)\">\n-\t\t\t<title>1-D single</title>\n-\t\t\t<g id=\"shape17-132\">\n-\t\t\t\t<title>Sheet.17</title>\n-\t\t\t\t<g id=\"shadow17-133\" transform=\"matrix(1,0,0,1,2.0287,0.177741)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t L0 456.15 Z\" class=\"st5\"/>\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"\n-\t\t\t\t\t\t\tclass=\"st6\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\n-\t\t\t\t\t\t\t Z\" class=\"st7\"/>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape18-139\">\n-\t\t\t\t<title>Sheet.18</title>\n-\t\t\t\t<g id=\"shadow18-140\" transform=\"matrix(1,0,0,1,2.0287,0.177741)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape19-146\" transform=\"translate(-4.26978,-2.88265)\">\n-\t\t\t\t<title>Sheet.19</title>\n-\t\t\t\t<g id=\"shadow19-147\" transform=\"matrix(1,0,0,1,2.0287,0.177741)\" class=\"st1\">\n-\t\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.87959\" height=\"5.57329\" rx=\"0.939796\" ry=\"0.939796\" class=\"st9\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.87959\" height=\"5.57329\" rx=\"0.939796\" ry=\"0.939796\" class=\"st10\"/>\n-\t\t\t</g>\n-\t\t</g>\n-\t\t<g id=\"group20-151\" transform=\"translate(534.375,54.9035) rotate(76.5904)\">\n-\t\t\t<title>1-D single.20</title>\n-\t\t\t<g id=\"shape21-152\">\n-\t\t\t\t<title>Sheet.21</title>\n-\t\t\t\t<g id=\"shadow21-153\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t L0 456.15 Z\" class=\"st5\"/>\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"\n-\t\t\t\t\t\t\tclass=\"st6\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\n-\t\t\t\t\t\t\t Z\" class=\"st7\"/>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape22-159\">\n-\t\t\t\t<title>Sheet.22</title>\n-\t\t\t\t<g id=\"shadow22-160\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape23-166\" transform=\"translate(-2.82107,-2.88265)\">\n-\t\t\t\t<title>Sheet.23</title>\n-\t\t\t\t<g id=\"shadow23-167\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.24186\" height=\"5.57329\" rx=\"0.620928\" ry=\"0.620928\" class=\"st9\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.24186\" height=\"5.57329\" rx=\"0.620928\" ry=\"0.620928\" class=\"st10\"/>\n-\t\t\t</g>\n-\t\t</g>\n-\t\t<g id=\"group28-171\" transform=\"translate(636.422,54.9035) rotate(76.5904)\">\n-\t\t\t<title>1-D single.28</title>\n-\t\t\t<g id=\"shape29-172\">\n-\t\t\t\t<title>Sheet.29</title>\n-\t\t\t\t<g id=\"shadow29-173\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t L0 456.15 Z\" class=\"st5\"/>\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"\n-\t\t\t\t\t\t\tclass=\"st6\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\n-\t\t\t\t\t\t\t Z\" class=\"st7\"/>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape30-179\">\n-\t\t\t\t<title>Sheet.30</title>\n-\t\t\t\t<g id=\"shadow30-180\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape31-186\" transform=\"translate(-2.82107,-2.88265)\">\n-\t\t\t\t<title>Sheet.31</title>\n-\t\t\t\t<g id=\"shadow31-187\" transform=\"matrix(1,0,0,1,1.73469,-1.06679)\" class=\"st1\">\n-\t\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.24186\" height=\"5.57329\" rx=\"0.620928\" ry=\"0.620928\" class=\"st9\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.24186\" height=\"5.57329\" rx=\"0.620928\" ry=\"0.620928\" class=\"st10\"/>\n-\t\t\t</g>\n-\t\t</g>\n-\t\t<g id=\"shape32-191\" transform=\"translate(18.3,-417.299)\">\n-\t\t\t<title>Box.32</title>\n-\t\t\t<desc>DPDK Application</desc>\n-\t\t\t<g id=\"shadow32-192\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"435.599\" width=\"201.26\" height=\"23.3858\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"435.599\" width=\"201.26\" height=\"23.3858\" class=\"st15\"/>\n-\t\t\t<text x=\"68.84\" y=\"446.8\" class=\"st13\">DPDK Application</text>\t\t</g>\n-\t\t<g id=\"shape33-198\" transform=\"translate(245.072,-298.953)\">\n-\t\t\t<title>Box.33</title>\n-\t\t\t<desc>VM 1</desc>\n-\t\t\t<g id=\"shadow33-199\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"317.253\" width=\"99.2126\" height=\"141.732\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"317.253\" width=\"99.2126\" height=\"141.732\" class=\"st3\"/>\n-\t\t\t<text x=\"40.27\" y=\"414.52\" class=\"st11\">VM 1</text>\t\t</g>\n-\t\t<g id=\"shape34-204\" transform=\"translate(245.072,-298.953)\">\n-\t\t\t<title>Box.34</title>\n-\t\t\t<desc>Virtual Core 0</desc>\n-\t\t\t<g id=\"shadow34-205\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.76\" y=\"438.51\" class=\"st13\">Virtual <tspan x=\"12.09\" dy=\"1.2em\" class=\"st14\">Core </tspan>0</text>\t\t</g>\n-\t\t<g id=\"shape35-211\" transform=\"translate(296.095,-298.953)\">\n-\t\t\t<title>Box.35</title>\n-\t\t\t<desc>Virtual Core 1</desc>\n-\t\t\t<g id=\"shadow35-212\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"422.843\" width=\"48.189\" height=\"36.1417\" class=\"st12\"/>\n-\t\t\t<text x=\"12.76\" y=\"438.51\" class=\"st13\">Virtual <tspan x=\"12.09\" dy=\"1.2em\" class=\"st14\">Core </tspan>1</text>\t\t</g>\n-\t\t<g id=\"shape36-218\" transform=\"translate(245.072,-417.299)\">\n-\t\t\t<title>Box.36</title>\n-\t\t\t<desc>DPDK Application</desc>\n-\t\t\t<g id=\"shadow36-219\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"435.599\" width=\"99.2126\" height=\"23.3858\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"435.599\" width=\"99.2126\" height=\"23.3858\" class=\"st15\"/>\n-\t\t\t<text x=\"17.81\" y=\"446.8\" class=\"st13\">DPDK Application</text>\t\t</g>\n-\t\t<g id=\"shape49-224\" transform=\"translate(372.631,-334.488)\">\n-\t\t\t<title>Box.49</title>\n-\t\t\t<desc>DPDK VM Application Reuse librte_power interface, but provide...</desc>\n-\t\t\t<g id=\"shadow49-225\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"352.788\" width=\"175.748\" height=\"106.197\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"352.788\" width=\"175.748\" height=\"106.197\" class=\"st16\"/>\n-\t\t\t<text x=\"4\" y=\"363.99\" class=\"st11\">DPDK VM Application <tspan x=\"4\" dy=\"1.212em\" class=\"st17\">·</tspan><tspan\n-\t\t\t\t\t\tclass=\"st17\"> </tspan><tspan class=\"st18\">Reuse </tspan>librte_power<tspan class=\"st18\"> </tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">interface</tspan><tspan class=\"st18\">, </tspan><tspan class=\"st18\">but </tspan><tspan x=\"22\"\n-\t\t\t\t\t\tdy=\"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\n-\t\t\t\t\t\tx=\"22\" dy=\"1.2em\" class=\"st18\">via Virtio</tspan><tspan class=\"st18\">-</tspan><tspan class=\"st18\">Serial channel </tspan><tspan\n-\t\t\t\t\t\tx=\"4\" dy=\"1.212em\" class=\"st17\">·</tspan><tspan class=\"st17\"> </tspan><tspan class=\"st18\">Each lcore has exclusive access to a </tspan><tspan\n-\t\t\t\t\t\tx=\"22\" dy=\"1.204em\" class=\"st18\">single channel </tspan><tspan x=\"4\" dy=\"1.212em\" class=\"st17\">·</tspan><tspan\n-\t\t\t\t\t\tclass=\"st17\"> </tspan><tspan class=\"st18\">Sample application re</tspan><tspan class=\"st18\">-</tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">uses </tspan>l3fwd_power <tspan x=\"4\" dy=\"1.216em\" class=\"st17\">·</tspan><tspan class=\"st17\"> </tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">A CLI for changing frequency from within </tspan><tspan x=\"22\" dy=\"1.204em\" class=\"st18\">a VM is also included</tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">.</tspan></text>\t\t</g>\n-\t\t<g id=\"group37-257\" transform=\"translate(769.581,100.51) rotate(82.4551)\">\n-\t\t\t<title>1-D single.37</title>\n-\t\t\t<g id=\"shape38-258\">\n-\t\t\t\t<title>Sheet.38</title>\n-\t\t\t\t<g id=\"shadow38-259\" transform=\"matrix(1,0,0,1,1.61661,-1.23846)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t L0 456.15 Z\" class=\"st5\"/>\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"\n-\t\t\t\t\t\t\tclass=\"st6\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\n-\t\t\t\t\t\t\t Z\" class=\"st7\"/>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t -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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape39-265\">\n-\t\t\t\t<title>Sheet.39</title>\n-\t\t\t\t<g id=\"shadow39-266\" transform=\"matrix(1,0,0,1,1.61661,-1.23846)\" class=\"st1\">\n-\t\t\t\t\t<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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t\t 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\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\n-\t\t\t\t\t\t\t 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\"/>\n-\t\t\t</g>\n-\t\t\t<g id=\"shape40-272\" transform=\"translate(-2.76812,-2.88265)\">\n-\t\t\t\t<title>Sheet.40</title>\n-\t\t\t\t<g id=\"shadow40-273\" transform=\"matrix(1,0,0,1,1.61661,-1.23846)\" class=\"st1\">\n-\t\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.21855\" height=\"5.57329\" rx=\"0.609275\" ry=\"0.609275\" class=\"st9\"/>\n-\t\t\t\t</g>\n-\t\t\t\t<rect x=\"0\" y=\"453.412\" width=\"1.21855\" height=\"5.57329\" rx=\"0.609275\" ry=\"0.609275\" class=\"st10\"/>\n-\t\t\t</g>\n-\t\t</g>\n-\t\t<g id=\"shape15-277\" transform=\"translate(18.3,-99.8187)\">\n-\t\t\t<title>Box.15</title>\n-\t\t\t<desc>OS/Hypervisor</desc>\n-\t\t\t<g id=\"shadow15-278\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"319.379\" width=\"405.354\" height=\"139.606\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"319.379\" width=\"405.354\" height=\"139.606\" class=\"st19\"/>\n-\t\t\t<text x=\"174.89\" y=\"452.58\" class=\"st11\">OS/Hypervisor</text>\t\t</g>\n-\t\t<g id=\"shape55-284\" transform=\"translate(237.985,-159.346)\">\n-\t\t\t<title>Box.55</title>\n-\t\t\t<desc>Linux “userspace” power governor /sys/devices/system/cpu/cpuN...</desc>\n-\t\t\t<g id=\"shadow55-285\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"430.638\" width=\"167.244\" height=\"28.3465\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"430.638\" width=\"167.244\" height=\"28.3465\" class=\"st19\"/>\n-\t\t\t<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>\t\t</g>\n-\t\t<g id=\"shape45-291\" transform=\"translate(429.324,-60.1337)\">\n-\t\t\t<title>Box.45</title>\n-\t\t\t<desc>VM Power Monitor Accepts VM Commands over Virtio Serial endpo...</desc>\n-\t\t\t<g id=\"shadow45-292\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"254.89\" width=\"130.519\" height=\"204.094\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"254.89\" width=\"130.519\" height=\"204.094\" class=\"st16\"/>\n-\t\t\t<text x=\"4\" y=\"266.09\" class=\"st11\">VM Power Monitor <tspan x=\"4\" dy=\"1.212em\" class=\"st17\">·</tspan><tspan\n-\t\t\t\t\t\tclass=\"st17\"> </tspan><tspan class=\"st18\">Accepts VM Commands over </tspan><tspan x=\"22\" dy=\"1.204em\"\n-\t\t\t\t\t\tclass=\"st18\">Virtio Serial endpoints</tspan><tspan class=\"st18\">, </tspan><tspan x=\"22\" dy=\"1.2em\"\n-\t\t\t\t\t\tclass=\"st18\">monitored via </tspan>epoll <tspan x=\"4\" dy=\"1.212em\" class=\"st17\">·</tspan><tspan\n-\t\t\t\t\t\tclass=\"st17\"> </tspan><tspan class=\"st18\">Commands include the </tspan><tspan x=\"22\" dy=\"1.204em\"\n-\t\t\t\t\t\tclass=\"st18\">virtual core to be modified</tspan><tspan class=\"st18\">, </tspan><tspan x=\"22\" dy=\"1.2em\"\n-\t\t\t\t\t\tclass=\"st18\">using </tspan>libvirt <tspan class=\"st18\">to get physical </tspan><tspan x=\"22\" dy=\"1.2em\"\n-\t\t\t\t\t\tclass=\"st18\">core mapping </tspan><tspan x=\"4\" dy=\"1.212em\" class=\"st17\">·</tspan><tspan class=\"st17\"> </tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">Uses librte</tspan><tspan class=\"st18\">_</tspan><tspan class=\"st18\">power to affect </tspan><tspan\n-\t\t\t\t\t\tx=\"22\" dy=\"1.204em\" class=\"st18\">frequency changes via Linux </tspan><tspan x=\"22\" dy=\"1.2em\" class=\"st18\">userspace power </tspan><tspan\n-\t\t\t\t\t\tx=\"22\" dy=\"1.2em\" class=\"st18\">governor</tspan><tspan class=\"st18\">(</tspan><tspan class=\"st18\">APCI cpufreq</tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">) </tspan><tspan x=\"4\" dy=\"1.212em\" class=\"st17\">·</tspan><tspan class=\"st17\"> </tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">CLI</tspan><tspan class=\"st18\">: </tspan><tspan class=\"st18\">For adding VM channels </tspan><tspan\n-\t\t\t\t\t\tx=\"22\" dy=\"1.204em\" class=\"st18\">to monitor</tspan><tspan class=\"st18\">, </tspan><tspan class=\"st18\">inspecting and </tspan><tspan\n-\t\t\t\t\t\tx=\"22\" dy=\"1.2em\" class=\"st18\">changing channel state</tspan><tspan class=\"st18\">, </tspan><tspan x=\"22\"\n-\t\t\t\t\t\tdy=\"1.2em\" class=\"st18\">manually altering CPU </tspan><tspan x=\"22\" dy=\"1.2em\" class=\"st18\">frequency</tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">. </tspan><tspan class=\"st18\">Also allows for the </tspan><tspan x=\"22\" dy=\"1.2em\"\n-\t\t\t\t\t\tclass=\"st18\">changing of vCPU to pCPU </tspan><tspan x=\"22\" dy=\"1.2em\" class=\"st18\">pinning</tspan><tspan\n-\t\t\t\t\t\tclass=\"st18\">.</tspan></text>\t\t</g>\n-\t\t<g id=\"shape53-339\" transform=\"translate(26.8039,-116.827)\">\n-\t\t\t<title>Box.53</title>\n-\t\t\t<desc>VM Power Monitor Application</desc>\n-\t\t\t<g id=\"shadow53-340\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"342.41\" width=\"150.236\" height=\"116.575\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"342.41\" width=\"150.236\" height=\"116.575\" class=\"st20\"/>\n-\t\t\t<text x=\"17.34\" y=\"452.58\" class=\"st11\">VM Power Monitor Application</text>\t\t</g>\n-\t\t<g id=\"shape61-346\" transform=\"translate(18.3,-396.394)\">\n-\t\t\t<title>Box.61</title>\n-\t\t\t<desc>librte_power(vm)</desc>\n-\t\t\t<g id=\"shadow61-347\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"438.079\" width=\"201.26\" height=\"20.9055\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"438.079\" width=\"201.26\" height=\"20.9055\" class=\"st20\"/>\n-\t\t\t<text x=\"70.84\" y=\"450.93\" class=\"st13\">librte_power(vm)</text>\t\t</g>\n-\t\t<g id=\"shape48-352\" transform=\"translate(18.3,-366.275)\">\n-\t\t\t<title>Box.48</title>\n-\t\t\t<desc>lcore channel 0</desc>\n-\t\t\t<g id=\"shadow48-353\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st21\"/>\n-\t\t\t<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\"\n-\t\t\t\t\t\tdy=\"1.2em\" class=\"st14\">0</tspan></text>\t\t</g>\n-\t\t<g id=\"shape47-361\" transform=\"translate(245.072,-396.394)\">\n-\t\t\t<title>Box.47</title>\n-\t\t\t<desc>librte_power(vm)</desc>\n-\t\t\t<g id=\"shadow47-362\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"438.079\" width=\"99.2126\" height=\"20.9055\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"438.079\" width=\"99.2126\" height=\"20.9055\" class=\"st20\"/>\n-\t\t\t<text x=\"19.82\" y=\"450.93\" class=\"st13\">librte_power(vm)</text>\t\t</g>\n-\t\t<g id=\"shape46-367\" transform=\"translate(72.1583,-366.275)\">\n-\t\t\t<title>Box.46</title>\n-\t\t\t<desc>lcore channel 1</desc>\n-\t\t\t<g id=\"shadow46-368\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st21\"/>\n-\t\t\t<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\"\n-\t\t\t\t\t\tdy=\"1.2em\" class=\"st14\">1</tspan></text>\t\t</g>\n-\t\t<g id=\"shape60-375\" transform=\"translate(126.017,-366.275)\">\n-\t\t\t<title>Box.60</title>\n-\t\t\t<desc>lcore channel 2</desc>\n-\t\t\t<g id=\"shadow60-376\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st21\"/>\n-\t\t\t<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\"\n-\t\t\t\t\t\tdy=\"1.2em\" class=\"st14\">2</tspan></text>\t\t</g>\n-\t\t<g id=\"shape62-383\" transform=\"translate(177.04,-366.275)\">\n-\t\t\t<title>Box.62</title>\n-\t\t\t<desc>lcore channel 3</desc>\n-\t\t\t<g id=\"shadow62-384\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st21\"/>\n-\t\t\t<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\"\n-\t\t\t\t\t\tdy=\"1.2em\" class=\"st14\">3</tspan></text>\t\t</g>\n-\t\t<g id=\"shape50-391\" transform=\"translate(245.072,-366.275)\">\n-\t\t\t<title>Box.50</title>\n-\t\t\t<desc>lcore channel 0</desc>\n-\t\t\t<g id=\"shadow50-392\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st21\"/>\n-\t\t\t<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\"\n-\t\t\t\t\t\tdy=\"1.2em\" class=\"st14\">0</tspan></text>\t\t</g>\n-\t\t<g id=\"shape52-399\" transform=\"translate(301.765,-366.275)\">\n-\t\t\t<title>Box.52</title>\n-\t\t\t<desc>lcore channel 1</desc>\n-\t\t\t<g id=\"shadow52-400\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"428.867\" width=\"42.5197\" height=\"30.1181\" class=\"st21\"/>\n-\t\t\t<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\"\n-\t\t\t\t\t\tdy=\"1.2em\" class=\"st14\">1</tspan></text>\t\t</g>\n-\t\t<g id=\"shape51-407\" transform=\"translate(26.8039,-216.039)\">\n-\t\t\t<title>Box.51</title>\n-\t\t\t<desc>Endpoint Monitor(lcore channels)</desc>\n-\t\t\t<g id=\"shadow51-408\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st21\"/>\n-\t\t\t<text x=\"7.09\" y=\"452.82\" class=\"st11\">Endpoint Monitor(lcore channels)</text>\t\t</g>\n-\t\t<g id=\"shape25-413\" transform=\"translate(26.8039,-198.854)\">\n-\t\t\t<title>Box.25</title>\n-\t\t\t<desc>Channel Manager</desc>\n-\t\t\t<g id=\"shadow25-414\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st22\"/>\n-\t\t\t<text x=\"37.53\" y=\"452.82\" class=\"st11\">Channel Manager</text>\t\t</g>\n-\t\t<g id=\"shape41-420\" transform=\"translate(247.906,-215.862)\">\n-\t\t\t<title>Box.41</title>\n-\t\t\t<desc>QEMU</desc>\n-\t\t\t<g id=\"shadow41-421\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st21\"/>\n-\t\t\t<text x=\"58.87\" y=\"452.82\" class=\"st11\">QEMU</text>\t\t</g>\n-\t\t<g id=\"shape42-426\" transform=\"translate(247.906,-198.854)\">\n-\t\t\t<title>Box.42</title>\n-\t\t\t<desc>libvirt</desc>\n-\t\t\t<g id=\"shadow42-427\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st23\"/>\n-\t\t\t<text x=\"59.98\" y=\"452.82\" class=\"st11\">libvirt</text>\t\t</g>\n-\t\t<g id=\"shape43-433\" transform=\"translate(168.536,-231.718)\">\n-\t\t\t<title>Dynamic connector.43</title>\n-\t\t\t<path d=\"M0 465.98 L10.63 465.98 L10.63 466.16 L73.21 466.16\" class=\"st24\"/>\n-\t\t</g>\n-\t\t<g id=\"shape69-441\" transform=\"translate(168.536,-190.527)\">\n-\t\t\t<title>Dynamic connector</title>\n-\t\t\t<path d=\"M0 458.98 L10.63 458.98 L10.63 475.99 L63.29 475.99\" class=\"st24\"/>\n-\t\t</g>\n-\t\t<g id=\"shape26-447\" transform=\"translate(26.8039,-181.846)\">\n-\t\t\t<title>Box.26</title>\n-\t\t\t<desc>librte_power(Host)</desc>\n-\t\t\t<g id=\"shadow26-448\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st19\"/>\n-\t\t\t<text x=\"35.53\" y=\"452.82\" class=\"st11\">librte_power(Host)</text>\t\t</g>\n-\t\t<g id=\"shape68-453\" transform=\"translate(168.536,-200.449)\">\n-\t\t\t<title>Dynamic connector.68</title>\n-\t\t\t<desc>Map vCPU to pCPU</desc>\n-\t\t\t<path d=\"M5.8 451.9 L6.16 451.9 L73.21 451.9\" class=\"st26\"/>\n-\t\t\t<rect x=\"4.11883\" y=\"447.099\" width=\"71.1324\" height=\"9.59985\" class=\"st27\"/>\n-\t\t\t<text x=\"4.12\" y=\"454.3\" class=\"st13\">Map vCPU to pCPU</text>\t\t</g>\n-\t\t<g id=\"shape27-464\" transform=\"translate(26.8039,-164.838)\">\n-\t\t\t<title>Box.27</title>\n-\t\t\t<desc>VM Power CLI</desc>\n-\t\t\t<g id=\"shadow27-465\" transform=\"matrix(1,0,0,1,1.44,1.44)\" class=\"st1\">\n-\t\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st2\"/>\n-\t\t\t</g>\n-\t\t\t<rect x=\"0\" y=\"441.623\" width=\"141.732\" height=\"17.3622\" class=\"st22\"/>\n-\t\t\t<text x=\"44.2\" y=\"452.82\" class=\"st11\">VM Power CLI</text>\t\t</g>\n-\t</g>\n+<svg\n+ xmlns:osb=\"http://www.openswatchbook.org/uri/2009/osb\"\n+ xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n+ xmlns:cc=\"http://creativecommons.org/ns#\"\n+ xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n+ xmlns:svg=\"http://www.w3.org/2000/svg\"\n+ xmlns=\"http://www.w3.org/2000/svg\"\n+ xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n+ xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\n+ xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n+ width=\"180mm\"\n+ height=\"135mm\"\n+ viewBox=\"0 0 180 135\"\n+ version=\"1.1\"\n+ id=\"svg8\"\n+ inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"\n+ sodipodi:docname=\"PM_in_a_Virutal_Env.svg\">\n+ <defs\n+ id=\"defs2\">\n+ <marker\n+ inkscape:stockid=\"Arrow2Mstart\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mstart\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path5459\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(0.6)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:isstock=\"true\"\n+ style=\"overflow:visible\"\n+ id=\"marker12961\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"Arrow2Mend\">\n+ <path\n+ transform=\"scale(-0.6)\"\n+ 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\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ id=\"path12959\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:isstock=\"true\"\n+ style=\"overflow:visible\"\n+ id=\"marker12763\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"Arrow2Mend\">\n+ <path\n+ transform=\"scale(-0.6)\"\n+ 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\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ id=\"path12761\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker12573\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\"\n+ inkscape:collect=\"always\">\n+ <path\n+ id=\"path12571\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(-0.6)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Lend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker12395\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path12393\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-1.1,0,0,-1.1,-1.1,0)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <linearGradient\n+ id=\"linearGradient12389\"\n+ osb:paint=\"solid\">\n+ <stop\n+ style=\"stop-color:#d07f7d;stop-opacity:1;\"\n+ offset=\"0\"\n+ id=\"stop12387\" />\n+ </linearGradient>\n+ <marker\n+ inkscape:stockid=\"Arrow2Send\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker6022\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path6020\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-0.3,0,0,-0.3,0.69,0)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Send\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Send\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path5468\"\n+ style=\"fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-0.3,0,0,-0.3,0.69,0)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mend\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path5462\"\n+ style=\"fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(-0.6)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ style=\"overflow:visible\"\n+ id=\"DistanceStart\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"DistanceStart\"\n+ inkscape:isstock=\"true\">\n+ <g\n+ id=\"g2300\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1\">\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,0 H 2\"\n+ id=\"path2306\"\n+ inkscape:connector-curvature=\"0\" />\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1\"\n+ d=\"M 0,0 13,4 9,0 13,-4 Z\"\n+ id=\"path2302\"\n+ inkscape:connector-curvature=\"0\" />\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,-4 V 40\"\n+ id=\"path2304\"\n+ inkscape:connector-curvature=\"0\" />\n+ </g>\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Lend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker5751\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path5749\"\n+ style=\"fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-1.1,0,0,-1.1,-1.1,0)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow1Lend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow1Lend\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path5438\"\n+ d=\"M 0,0 5,-5 -12.5,0 5,5 Z\"\n+ style=\"fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:1.00000003pt;stroke-opacity:1\"\n+ transform=\"matrix(-0.8,0,0,-0.8,-10,0)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Lend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Lend\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ id=\"path5456\"\n+ style=\"fill:#bdb6b6;fill-opacity:1;fill-rule:evenodd;stroke:#bdb6b6;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-1.1,0,0,-1.1,-1.1,0)\"\n+ inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ style=\"overflow:visible\"\n+ id=\"DistanceStart-2\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"DistanceStart\"\n+ inkscape:isstock=\"true\">\n+ <g\n+ id=\"g2300-9\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,0 H 2\"\n+ id=\"path2306-7\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1\"\n+ d=\"M 0,0 13,4 9,0 13,-4 Z\"\n+ id=\"path2302-1\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,-4 V 40\"\n+ id=\"path2304-4\" />\n+ </g>\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Send\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker6022-2\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path6020-9\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-0.3,0,0,-0.3,0.69,0)\" />\n+ </marker>\n+ <marker\n+ style=\"overflow:visible\"\n+ id=\"DistanceStart-8\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"DistanceStart\"\n+ inkscape:isstock=\"true\">\n+ <g\n+ id=\"g2300-8\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,0 H 2\"\n+ id=\"path2306-1\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1\"\n+ d=\"M 0,0 13,4 9,0 13,-4 Z\"\n+ id=\"path2302-6\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,-4 V 40\"\n+ id=\"path2304-7\" />\n+ </g>\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Send\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker6022-8\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path6020-3\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-0.3,0,0,-0.3,0.69,0)\" />\n+ </marker>\n+ <marker\n+ style=\"overflow:visible\"\n+ id=\"DistanceStart-9\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"DistanceStart\"\n+ inkscape:isstock=\"true\">\n+ <g\n+ id=\"g2300-6\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,0 H 2\"\n+ id=\"path2306-12\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1\"\n+ d=\"M 0,0 13,4 9,0 13,-4 Z\"\n+ id=\"path2302-9\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,-4 V 40\"\n+ id=\"path2304-2\" />\n+ </g>\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Send\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker6022-0\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path6020-4\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-0.3,0,0,-0.3,0.69,0)\" />\n+ </marker>\n+ <marker\n+ style=\"overflow:visible\"\n+ id=\"DistanceStart-80\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"DistanceStart\"\n+ inkscape:isstock=\"true\">\n+ <g\n+ id=\"g2300-7\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,0 H 2\"\n+ id=\"path2306-8\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1\"\n+ d=\"M 0,0 13,4 9,0 13,-4 Z\"\n+ id=\"path2302-0\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,-4 V 40\"\n+ id=\"path2304-75\" />\n+ </g>\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Send\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker6022-3\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path6020-8\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-0.3,0,0,-0.3,0.69,0)\" />\n+ </marker>\n+ <marker\n+ style=\"overflow:visible\"\n+ id=\"DistanceStart-89\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"DistanceStart\"\n+ inkscape:isstock=\"true\">\n+ <g\n+ id=\"g2300-0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-opacity:1\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.14999998;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,0 H 2\"\n+ id=\"path2306-9\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-opacity:1\"\n+ d=\"M 0,0 13,4 9,0 13,-4 Z\"\n+ id=\"path2302-2\" />\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1;stroke-linecap:square;stroke-opacity:1\"\n+ d=\"M 0,-4 V 40\"\n+ id=\"path2304-5\" />\n+ </g>\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Send\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker6022-38\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path6020-1\"\n+ style=\"fill:#666b72;fill-opacity:1;fill-rule:evenodd;stroke:#666b72;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-0.3,0,0,-0.3,0.69,0)\" />\n+ </marker>\n+ </defs>\n+ <sodipodi:namedview\n+ id=\"base\"\n+ pagecolor=\"#ffffff\"\n+ bordercolor=\"#666666\"\n+ borderopacity=\"1.0\"\n+ inkscape:pageopacity=\"0.0\"\n+ inkscape:pageshadow=\"2\"\n+ inkscape:zoom=\"0.9899495\"\n+ inkscape:cx=\"546.09427\"\n+ inkscape:cy=\"348.57234\"\n+ inkscape:document-units=\"mm\"\n+ inkscape:current-layer=\"layer2\"\n+ showgrid=\"false\"\n+ inkscape:window-width=\"1920\"\n+ inkscape:window-height=\"1137\"\n+ inkscape:window-x=\"1912\"\n+ inkscape:window-y=\"-8\"\n+ inkscape:window-maximized=\"1\" />\n+ <metadata\n+ id=\"metadata5\">\n+ <rdf:RDF>\n+ <cc:Work\n+ rdf:about=\"\">\n+ <dc:format>image/svg+xml</dc:format>\n+ <dc:type\n+ rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n+ <dc:title></dc:title>\n+ </cc:Work>\n+ </rdf:RDF>\n+ </metadata>\n+ <g\n+ inkscape:groupmode=\"layer\"\n+ id=\"layer2\"\n+ inkscape:label=\"Drawing\"\n+ transform=\"translate(0,-162)\">\n+ <rect\n+ style=\"opacity:1;fill:#b3ca83;fill-opacity:1;stroke:#000000;stroke-width:0.37057942;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4791\"\n+ width=\"33.990398\"\n+ height=\"45.425076\"\n+ x=\"73.332619\"\n+ y=\"164.98018\" />\n+ <rect\n+ style=\"opacity:1;fill:#b3ca83;fill-opacity:1;stroke:#000000;stroke-width:0.35639697;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4530\"\n+ width=\"65.05616\"\n+ height=\"45.42617\"\n+ x=\"2.9913402\"\n+ y=\"164.97824\" />\n+ <rect\n+ style=\"opacity:0.97000002;fill:#a9c373;fill-opacity:1;stroke:#000000;stroke-width:0.22279529;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4530-7-8\"\n+ width=\"127.68393\"\n+ height=\"26.879263\"\n+ x=\"3.0420432\"\n+ y=\"267.96487\" />\n+ <rect\n+ style=\"opacity:1;fill:#e6f3f7;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4532\"\n+ width=\"62.87516\"\n+ height=\"7.3101764\"\n+ x=\"4.0651102\"\n+ y=\"165.93866\" />\n+ <rect\n+ style=\"opacity:1;fill:#a8c270;fill-opacity:1;stroke:#000000;stroke-width:0.32159171;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4532-2\"\n+ width=\"62.906345\"\n+ height=\"6.0718322\"\n+ x=\"4.0495176\"\n+ y=\"173.23325\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"22.865789\"\n+ y=\"170.33044\"\n+ id=\"text4551\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549\"\n+ x=\"22.865789\"\n+ y=\"170.33044\"\n+ 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>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"24.577578\"\n+ y=\"177.17308\"\n+ id=\"text4551-6\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8\"\n+ x=\"24.577578\"\n+ y=\"177.17308\"\n+ 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>\n+ <rect\n+ style=\"opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571\"\n+ width=\"13.510916\"\n+ height=\"10.574122\"\n+ x=\"4.0557852\"\n+ y=\"179.31134\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"10.65457\"\n+ y=\"182.5378\"\n+ id=\"text4551-6-1\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"10.65457\"\n+ y=\"182.5378\"\n+ 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\"\n+ id=\"tspan4605\">lcore</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"10.65457\"\n+ y=\"185.36002\"\n+ 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\"\n+ id=\"tspan4609\">channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"10.65457\"\n+ y=\"188.18224\"\n+ 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\"\n+ id=\"tspan4593\">0</tspan></text>\n+ <flowRoot\n+ xml:space=\"preserve\"\n+ id=\"flowRoot4595\"\n+ 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\n+ id=\"flowRegion4597\"\n+ style=\"font-size:10.66666698px\"><rect\n+ id=\"rect4599\"\n+ width=\"7.0710678\"\n+ height=\"66.670067\"\n+ x=\"116.67262\"\n+ y=\"238.13113\"\n+ style=\"font-size:10.66666698px\" /></flowRegion><flowPara\n+ id=\"flowPara4601\" /></flowRoot> <rect\n+ style=\"opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-6\"\n+ width=\"13.510917\"\n+ height=\"10.574122\"\n+ x=\"20.706484\"\n+ y=\"179.3261\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"27.305269\"\n+ y=\"182.55255\"\n+ id=\"text4551-6-1-2\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"27.305269\"\n+ y=\"182.55255\"\n+ 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\"\n+ id=\"tspan4605-8\">lcore</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"27.305269\"\n+ y=\"185.37477\"\n+ 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\"\n+ id=\"tspan4609-3\">channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"27.305269\"\n+ y=\"188.19699\"\n+ 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\"\n+ id=\"tspan4593-5\">1</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-7\"\n+ width=\"13.510917\"\n+ height=\"10.574122\"\n+ x=\"37.544464\"\n+ y=\"179.3261\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"44.143246\"\n+ y=\"182.55257\"\n+ id=\"text4551-6-1-0\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"44.143246\"\n+ y=\"182.55257\"\n+ 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\"\n+ id=\"tspan4605-7\">lcore</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"44.143246\"\n+ y=\"185.37479\"\n+ 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\"\n+ id=\"tspan4609-9\">channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"44.143246\"\n+ y=\"188.19701\"\n+ 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\"\n+ id=\"tspan4593-0\">2</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-75\"\n+ width=\"13.510917\"\n+ height=\"10.574122\"\n+ x=\"53.444946\"\n+ y=\"179.30507\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"60.043732\"\n+ y=\"182.53154\"\n+ id=\"text4551-6-1-5\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"60.043732\"\n+ y=\"182.53154\"\n+ 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\"\n+ id=\"tspan4605-2\">lcore</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"60.043732\"\n+ y=\"185.35376\"\n+ 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\"\n+ id=\"tspan4609-6\">channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"60.043732\"\n+ y=\"188.17598\"\n+ 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\"\n+ id=\"tspan4593-02\">3</tspan></text>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"35.405739\"\n+ y=\"195.69669\"\n+ id=\"text4551-6-1-3-2\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"35.405739\"\n+ y=\"195.69669\"\n+ 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\"\n+ id=\"tspan4593-6-6\">VM 0</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#e6f3f7;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4793\"\n+ width=\"31.844494\"\n+ height=\"7.3705354\"\n+ x=\"74.34877\"\n+ y=\"165.90273\" />\n+ <rect\n+ style=\"opacity:1;fill:#a8c270;fill-opacity:1;stroke:#000000;stroke-width:0.32056567;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4793-5\"\n+ width=\"31.876707\"\n+ height=\"6.0798306\"\n+ x=\"74.332664\"\n+ y=\"173.25716\" />\n+ <rect\n+ style=\"opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-75-0\"\n+ width=\"13.510918\"\n+ height=\"10.574122\"\n+ x=\"74.332664\"\n+ y=\"179.33699\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"80.93145\"\n+ y=\"182.56345\"\n+ id=\"text4551-6-1-5-9\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"80.93145\"\n+ y=\"182.56345\"\n+ 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\"\n+ id=\"tspan4605-2-2\">lcore</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"80.93145\"\n+ y=\"185.38567\"\n+ 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\"\n+ id=\"tspan4609-6-6\">channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"80.93145\"\n+ y=\"188.20789\"\n+ 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\"\n+ id=\"tspan4593-02-9\">0</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#f9b278;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-75-40\"\n+ width=\"13.510918\"\n+ height=\"10.574122\"\n+ x=\"92.698448\"\n+ y=\"179.33699\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"99.297241\"\n+ y=\"182.56345\"\n+ id=\"text4551-6-1-5-98\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"99.297241\"\n+ y=\"182.56345\"\n+ 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\"\n+ id=\"tspan4605-2-1\">lcore</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"99.297241\"\n+ y=\"185.38567\"\n+ 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\"\n+ id=\"tspan4609-6-8\">channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"99.297241\"\n+ y=\"188.20789\"\n+ 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\"\n+ id=\"tspan4593-02-4\">1</tspan></text>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"90.728218\"\n+ y=\"195.90175\"\n+ id=\"text4551-6-1-3-2-6\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"90.728218\"\n+ y=\"195.90175\"\n+ 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\"\n+ id=\"tspan4593-6-6-6\">VM 1</tspan></text>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"79.098969\"\n+ y=\"177.21642\"\n+ id=\"text4551-6-6\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-7\"\n+ x=\"79.098969\"\n+ y=\"177.21642\"\n+ 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>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"78.780937\"\n+ y=\"170.79013\"\n+ id=\"text4551-2\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-0\"\n+ x=\"78.780937\"\n+ y=\"170.79013\"\n+ 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>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"115.35013\"\n+ y=\"169.63728\"\n+ id=\"text4551-2-6\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-0-7\"\n+ x=\"115.35013\"\n+ y=\"169.63728\"\n+ style=\"font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:0.26458332\">DPDK VM Application</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"173.19772\"\n+ 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\"\n+ id=\"tspan4984\"> • Reuse <tspan\n+ style=\"font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'\"\n+ id=\"tspan13541\">librte_power</tspan> interface, but</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"176.75818\"\n+ 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\"\n+ id=\"tspan4986\"> provides a new implementation that </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"180.31862\"\n+ 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\"\n+ id=\"tspan4988\"> forwards frequency set requests to the</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"183.87907\"\n+ 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\"\n+ id=\"tspan4990\"> host using a Virtio-Serial channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"187.43951\"\n+ 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\"\n+ id=\"tspan4992\"> • Each lcore has exclusive access to a</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"190.99997\"\n+ 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\"\n+ id=\"tspan4994\"> single channel </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"194.56041\"\n+ 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\"\n+ id=\"tspan4996\"> • Sample application reuses <tspan\n+ style=\"font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'\"\n+ id=\"tspan13543\">l3fwd_power</tspan></tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"198.12086\"\n+ 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\"\n+ id=\"tspan4998\"> • A CLI for changing frequency from within</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"201.6813\"\n+ 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\"\n+ id=\"tspan5000\"> a VM is also included.</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"115.35013\"\n+ y=\"205.24176\"\n+ 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\"\n+ id=\"tspan4982\" /></text>\n+ <rect\n+ style=\"opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.35572669;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5002\"\n+ width=\"56.211514\"\n+ height=\"37.133213\"\n+ x=\"114.32124\"\n+ y=\"165.99869\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"135.61612\"\n+ y=\"229.79572\"\n+ id=\"text4551-2-6-2\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-0-7-8\"\n+ x=\"135.61612\"\n+ y=\"229.79572\"\n+ style=\"font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222223px;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:0.26458332\">VM Power Monitor</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"233.35616\"\n+ 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\"\n+ id=\"tspan4990-0\"> • Accepts VM commands over</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"236.91661\"\n+ 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\"\n+ id=\"tspan5061\"> Virtio Serial endpoints, </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"240.47705\"\n+ 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\"\n+ id=\"tspan5063\"> monitored using <tspan\n+ style=\"font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'\"\n+ id=\"tspan13545\">epoll</tspan>.</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"244.03751\"\n+ 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\"\n+ id=\"tspan4992-3\"> • Commands include the</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"247.59795\"\n+ 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\"\n+ id=\"tspan4994-5\"> virutal core to be modified,</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"251.1584\"\n+ 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\"\n+ id=\"tspan5065\"> using <tspan\n+ style=\"font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold'\"\n+ id=\"tspan13547\">libvirt</tspan> to get the physical</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"254.71884\"\n+ 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\"\n+ id=\"tspan5067\"> core mapping. </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"258.2793\"\n+ 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\"\n+ id=\"tspan4996-5\"> • Uses librte_power to affect</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"261.83975\"\n+ 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\"\n+ id=\"tspan5069\"> frequency changes using </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"265.40018\"\n+ 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\"\n+ id=\"tspan5071\"> Linux userspace power</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"268.96063\"\n+ 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\"\n+ id=\"tspan5073\"> governor (APCI cpufreq).</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"272.52109\"\n+ 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\"\n+ id=\"tspan4998-6\"> • CLI: For adding VM channels</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"276.08154\"\n+ 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\"\n+ id=\"tspan5000-7\"> to monitor, inspecting and </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"279.64197\"\n+ 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\"\n+ id=\"tspan5075\"> changing channel state,</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"283.20242\"\n+ 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\"\n+ id=\"tspan5077\"> manually altering CPU</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"286.76288\"\n+ 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\"\n+ id=\"tspan5079\"> frequency. Also allows for the</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"290.32333\"\n+ 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\"\n+ id=\"tspan5081\"> changing of vCPU to pCPU </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"293.88376\"\n+ 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\"\n+ id=\"tspan5083\"> pinning.</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"135.61612\"\n+ y=\"297.44421\"\n+ 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\"\n+ id=\"tspan4982-3\" /></text>\n+ <rect\n+ style=\"opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5002-1\"\n+ width=\"43.111595\"\n+ height=\"69.097458\"\n+ x=\"134.19011\"\n+ y=\"226.29218\" />\n+ <rect\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5309\"\n+ width=\"14.835566\"\n+ height=\"11.339286\"\n+ x=\"3.8562157\"\n+ y=\"274.75986\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"6.5029726\"\n+ y=\"281.56589\"\n+ id=\"text5313\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan5311\"\n+ x=\"6.5029726\"\n+ y=\"281.56589\"\n+ 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>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5309-9\"\n+ width=\"14.835566\"\n+ height=\"11.339286\"\n+ x=\"19.750116\"\n+ y=\"274.75986\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"22.396875\"\n+ y=\"281.56589\"\n+ id=\"text5313-3\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan5311-3\"\n+ x=\"22.396875\"\n+ y=\"281.56589\"\n+ 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>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"67.413933\"\n+ y=\"292.11707\"\n+ id=\"text4551-6-1-3-2-3\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"67.413933\"\n+ y=\"292.11707\"\n+ 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\"\n+ id=\"tspan4593-6-6-9\">Host</tspan></text>\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.76388884;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#DistanceStart);marker-end:url(#marker6022)\"\n+ d=\"m 26.945189,207.4991 16.220549,67.26077\"\n+ id=\"path5433\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n+ <rect\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5309-9-2\"\n+ width=\"14.835566\"\n+ height=\"11.339286\"\n+ x=\"35.644016\"\n+ y=\"274.75986\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"38.290771\"\n+ y=\"281.56589\"\n+ id=\"text5313-3-7\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan5311-3-5\"\n+ x=\"38.290771\"\n+ y=\"281.56589\"\n+ 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>\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.76388884;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)\"\n+ d=\"m 43.815139,209.27096 15.686009,65.38988\"\n+ id=\"path5433-9\"\n+ inkscape:connector-curvature=\"0\" />\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.76388884;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)\"\n+ d=\"m 60.162609,209.27096 15.68601,65.38988\"\n+ id=\"path5433-5\"\n+ inkscape:connector-curvature=\"0\" />\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.76388884;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)\"\n+ d=\"M 9.1777468,207.41628 90.684191,274.56635\"\n+ id=\"path5433-6\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.76388884;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)\"\n+ d=\"m 81.279275,208.7018 41.733935,66.15255\"\n+ id=\"path5433-7\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n+ <path\n+ style=\"fill:#666b72;fill-opacity:1;stroke:#666b72;stroke-width:1.76388884;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)\"\n+ d=\"m 99.427521,209.36997 7.087049,65.2954\"\n+ id=\"path5433-2\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n+ <rect\n+ 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\"\n+ id=\"rect4530-7\"\n+ width=\"127.62878\"\n+ height=\"40.216084\"\n+ x=\"3.0696197\"\n+ y=\"227.75278\" />\n+ <rect\n+ style=\"opacity:0.97000002;fill:#aac475;fill-opacity:1;stroke:#000000;stroke-width:0.35901672;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5115\"\n+ width=\"50.111969\"\n+ height=\"36.47134\"\n+ x=\"4.3251848\"\n+ y=\"229.6501\" />\n+ <rect\n+ style=\"opacity:0.97000002;fill:#f8a25f;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5117\"\n+ width=\"45.451633\"\n+ height=\"5.4806519\"\n+ x=\"6.442668\"\n+ y=\"231.02805\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"8.3580427\"\n+ y=\"234.81723\"\n+ id=\"text4551-6-8\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-0\"\n+ x=\"8.3580427\"\n+ y=\"234.81723\"\n+ 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>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#a4c3e8;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5117-9\"\n+ width=\"45.451633\"\n+ height=\"5.4806519\"\n+ x=\"6.4426622\"\n+ y=\"236.59908\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"16.824707\"\n+ y=\"240.16428\"\n+ id=\"text4551-6-8-8\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-0-2\"\n+ x=\"16.824707\"\n+ y=\"240.16428\"\n+ 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>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#d99896;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5117-1\"\n+ width=\"45.451633\"\n+ height=\"5.4806519\"\n+ x=\"6.4426546\"\n+ y=\"242.07971\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"16.295534\"\n+ y=\"245.64491\"\n+ id=\"text4551-6-8-1\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-0-1\"\n+ x=\"16.295534\"\n+ y=\"245.64491\"\n+ 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>\n+ <rect\n+ 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\"\n+ id=\"rect5117-4\"\n+ width=\"45.451633\"\n+ height=\"5.4806519\"\n+ x=\"6.4426584\"\n+ y=\"247.56038\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"18.412207\"\n+ y=\"251.12558\"\n+ id=\"text4551-6-8-13\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-0-9\"\n+ x=\"18.412207\"\n+ y=\"251.12558\"\n+ 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>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#f9ae72;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5117-0\"\n+ width=\"45.451633\"\n+ height=\"5.4806519\"\n+ x=\"81.010612\"\n+ y=\"231.02805\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"98.801003\"\n+ y=\"234.59322\"\n+ id=\"text4551-6-8-4\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-0-97\"\n+ x=\"98.801003\"\n+ y=\"234.59322\"\n+ 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>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#dfdfdf;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5117-0-8\"\n+ width=\"45.451633\"\n+ height=\"5.4806519\"\n+ x=\"81.01062\"\n+ y=\"236.5087\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"99.859344\"\n+ y=\"240.07385\"\n+ id=\"text4551-6-8-4-0\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-0-97-5\"\n+ x=\"99.859344\"\n+ y=\"240.07385\"\n+ 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>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"28.996965\"\n+ y=\"263.96405\"\n+ id=\"text4551-6-1-3-2-9\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"28.996965\"\n+ y=\"263.96405\"\n+ 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\"\n+ id=\"tspan4593-6-6-0\">VM Power Monitor Application</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#d07f7d;fill-opacity:0.91372549;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5117-0-7\"\n+ width=\"53.336025\"\n+ height=\"9.3962946\"\n+ x=\"72.768929\"\n+ y=\"245.33264\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"74.799515\"\n+ y=\"249.10745\"\n+ id=\"text4551-6-8-4-4\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan4549-8-0-97-0\"\n+ x=\"74.799515\"\n+ y=\"249.10745\"\n+ 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\n+ sodipodi:role=\"line\"\n+ x=\"74.799515\"\n+ y=\"252.66789\"\n+ 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\"\n+ id=\"tspan5289\">/sys/devices/system/cpu/cpuN/cpufreq/</tspan></text>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"67.852898\"\n+ y=\"265.42874\"\n+ id=\"text4551-6-1-3-2-8\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"67.852898\"\n+ y=\"265.42874\"\n+ 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\"\n+ id=\"tspan4593-6-6-7\">OS/Hypervisor</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-65\"\n+ width=\"13.510917\"\n+ height=\"10.574122\"\n+ x=\"4.0509348\"\n+ y=\"198.76773\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"10.649721\"\n+ y=\"203.05254\"\n+ id=\"text4551-6-1-3\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"10.649721\"\n+ y=\"203.05254\"\n+ 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\"\n+ id=\"tspan4605-6\">Virtual</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"10.649721\"\n+ y=\"205.87476\"\n+ 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\"\n+ id=\"tspan4593-6\">Core 0</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-6-9\"\n+ width=\"13.510918\"\n+ height=\"10.574122\"\n+ x=\"20.701635\"\n+ y=\"198.78249\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"27.300417\"\n+ y=\"203.06729\"\n+ id=\"text4551-6-1-2-3\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"27.300417\"\n+ y=\"203.06729\"\n+ 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\"\n+ id=\"tspan4605-8-0\">Virtual</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"27.300417\"\n+ y=\"205.88951\"\n+ 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\"\n+ id=\"tspan4593-5-9\">Core 1</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-7-1\"\n+ width=\"13.510918\"\n+ height=\"10.574122\"\n+ x=\"37.539612\"\n+ y=\"198.78249\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"44.138397\"\n+ y=\"203.06729\"\n+ id=\"text4551-6-1-0-8\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"44.138397\"\n+ y=\"203.06729\"\n+ 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\"\n+ id=\"tspan4605-7-1\">Virutal</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"44.138397\"\n+ y=\"205.88951\"\n+ 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\"\n+ id=\"tspan4593-0-7\">Core 2</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-75-4\"\n+ width=\"13.510918\"\n+ height=\"10.574122\"\n+ x=\"53.440094\"\n+ y=\"198.76146\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"60.038879\"\n+ y=\"203.04626\"\n+ id=\"text4551-6-1-5-6\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"60.038879\"\n+ y=\"203.04626\"\n+ 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\"\n+ id=\"tspan4605-2-8\">Virutal</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"60.038879\"\n+ y=\"205.86848\"\n+ 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\"\n+ id=\"tspan4593-02-1\">Core 3</tspan></text>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5309-9-7\"\n+ width=\"14.835566\"\n+ height=\"11.339286\"\n+ x=\"51.537918\"\n+ y=\"274.75986\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"54.184669\"\n+ y=\"281.56589\"\n+ id=\"text5313-3-0\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan5311-3-55\"\n+ x=\"54.184669\"\n+ y=\"281.56589\"\n+ 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>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5309-9-8\"\n+ width=\"14.835566\"\n+ height=\"11.339286\"\n+ x=\"67.431816\"\n+ y=\"274.75986\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"70.078575\"\n+ y=\"281.56589\"\n+ id=\"text5313-3-3\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan5311-3-9\"\n+ x=\"70.078575\"\n+ y=\"281.56589\"\n+ 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>\n+ <rect\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect5309-9-5\"\n+ width=\"14.835566\"\n+ height=\"11.339286\"\n+ x=\"83.325706\"\n+ y=\"274.75986\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"85.972481\"\n+ y=\"281.56589\"\n+ id=\"text5313-3-05\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan5311-3-2\"\n+ x=\"85.972481\"\n+ y=\"281.56589\"\n+ 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>\n+ <rect\n+ y=\"274.75986\"\n+ x=\"99.219597\"\n+ height=\"11.339286\"\n+ width=\"14.835566\"\n+ id=\"rect5309-9-4\"\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" />\n+ <text\n+ id=\"text5313-3-5\"\n+ y=\"281.56589\"\n+ x=\"101.86636\"\n+ 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\"\n+ xml:space=\"preserve\"><tspan\n+ 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\"\n+ y=\"281.56589\"\n+ x=\"101.86636\"\n+ id=\"tspan5311-3-50\"\n+ sodipodi:role=\"line\">Core 6</tspan></text>\n+ <rect\n+ y=\"274.75986\"\n+ x=\"115.11353\"\n+ height=\"11.339286\"\n+ width=\"14.835566\"\n+ id=\"rect5309-9-6\"\n+ style=\"opacity:0.97000002;fill:#b2c5dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" />\n+ <text\n+ id=\"text5313-3-03\"\n+ y=\"281.56589\"\n+ x=\"117.7603\"\n+ 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\"\n+ xml:space=\"preserve\"><tspan\n+ 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\"\n+ y=\"281.56589\"\n+ x=\"117.7603\"\n+ id=\"tspan5311-3-90\"\n+ sodipodi:role=\"line\">Core 7</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-6-9-8\"\n+ width=\"13.510919\"\n+ height=\"10.574122\"\n+ x=\"92.681847\"\n+ y=\"198.77974\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"99.280617\"\n+ y=\"203.06454\"\n+ id=\"text4551-6-1-2-3-5\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"99.280617\"\n+ y=\"203.06454\"\n+ 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\"\n+ id=\"tspan4605-8-0-6\">Virtual</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"99.280617\"\n+ y=\"205.88676\"\n+ 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\"\n+ id=\"tspan4593-5-9-0\">Core 1</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36531466;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect4571-65-0\"\n+ width=\"13.510918\"\n+ height=\"10.574122\"\n+ x=\"74.368103\"\n+ y=\"198.76498\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"81.685051\"\n+ y=\"203.04979\"\n+ id=\"text4551-6-1-3-3\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"81.685051\"\n+ y=\"203.04979\"\n+ 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\"\n+ id=\"tspan4605-6-1\">Virtual</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"81.685051\"\n+ y=\"205.87201\"\n+ 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\"\n+ id=\"tspan4593-6-3\">Core 0</tspan></text>\n+ <path\n+ style=\"fill:none;stroke:#000000;stroke-width:0.28939158px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker12763)\"\n+ d=\"M 52.1562,233.6685 H 80.658056\"\n+ id=\"path12353\"\n+ inkscape:connector-curvature=\"0\" />\n+ <path\n+ 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)\"\n+ d=\"M 52.423464,239.11128 H 80.658051\"\n+ id=\"path12353-4\"\n+ inkscape:connector-curvature=\"0\" />\n+ <rect\n+ style=\"opacity:1;fill:#fffdfd;fill-opacity:1;stroke:none;stroke-width:0.30100071;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect12385\"\n+ width=\"21.548515\"\n+ height=\"3.6533842\"\n+ x=\"56.031593\"\n+ y=\"237.3535\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"56.522133\"\n+ y=\"239.80431\"\n+ id=\"text12372\"><tspan\n+ sodipodi:role=\"line\"\n+ id=\"tspan12370\"\n+ x=\"56.522133\"\n+ y=\"239.80431\"\n+ style=\"font-size:2.11666656px;stroke-width:0.26458332\">Map vCPU to pCPU</tspan></text>\n+ <path\n+ style=\"fill:none;stroke:#000000;stroke-width:0.21566178px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker12961)\"\n+ d=\"m 51.894295,244.63493 h 10.914044 v 5.05835 h 9.755338\"\n+ id=\"path12951\"\n+ inkscape:connector-curvature=\"0\" />\n+ </g>\n </svg>\ndiff --git a/doc/guides/sample_app_ug/img/vm_power_mgr_vm_request_seq.svg b/doc/guides/sample_app_ug/img/vm_power_mgr_vm_request_seq.svg\nindex 1487cda9a..0c6d49f0c 100644\n--- a/doc/guides/sample_app_ug/img/vm_power_mgr_vm_request_seq.svg\n+++ b/doc/guides/sample_app_ug/img/vm_power_mgr_vm_request_seq.svg\n@@ -1,4 +1,5 @@\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n+<!-- Created with Inkscape (http://www.inkscape.org/) -->\n \n <!-- SPDX-License-Identifier: BSD-3-Clause -->\n <!-- Copyright(c) 2014 Intel Corporation -->\n@@ -12,884 +13,688 @@\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\n xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n+ width=\"190mm\"\n+ height=\"105mm\"\n+ viewBox=\"0 0 190 105\"\n version=\"1.1\"\n- width=\"912.44751\"\n- height=\"664.9787\"\n- id=\"svg5187\"\n- inkscape:version=\"0.48.5 r10040\"\n- sodipodi:docname=\"vm_power_mgr_vm_request_seq.svg\">\n- <metadata\n- id=\"metadata5497\">\n- <rdf:RDF>\n- <cc:Work\n- rdf:about=\"\">\n- <dc:format>image/svg+xml</dc:format>\n- <dc:type\n- rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n- <dc:title />\n- </cc:Work>\n- </rdf:RDF>\n- </metadata>\n+ id=\"svg13567\"\n+ inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"\n+ sodipodi:docname=\"VM_Req_to_Scale_Freq.svg\">\n <defs\n- id=\"defs5495\" />\n- <sodipodi:namedview\n- pagecolor=\"#ffffff\"\n- bordercolor=\"#666666\"\n- borderopacity=\"1\"\n- objecttolerance=\"10\"\n- gridtolerance=\"10\"\n- guidetolerance=\"10\"\n- inkscape:pageopacity=\"0\"\n- inkscape:pageshadow=\"2\"\n- inkscape:window-width=\"1920\"\n- inkscape:window-height=\"1005\"\n- id=\"namedview5493\"\n- showgrid=\"false\"\n- fit-margin-top=\"0.1\"\n- fit-margin-right=\"0.1\"\n- fit-margin-bottom=\"0.1\"\n- fit-margin-left=\"0.1\"\n- inkscape:zoom=\"1.5857392\"\n- inkscape:cx=\"533.1241\"\n- inkscape:cy=\"478.97029\"\n- inkscape:window-x=\"1920\"\n- inkscape:window-y=\"36\"\n- inkscape:window-maximized=\"0\"\n- inkscape:current-layer=\"Layer1000\" />\n- <g\n- id=\"Layer1000\"\n- transform=\"matrix(1.3033705,0,0,1.3931773,-22.056332,168.16686)\">\n- <g\n- id=\"Layer1001\"\n- transform=\"matrix(1.237886,0,0,1.2010974,-4.0390827,-71.427441)\">\n- <defs\n- id=\"defs5191\">\n- <filter\n- filterUnits=\"userSpaceOnUse\"\n- id=\"shadow1\"\n- color-interpolation-filters=\"sRGB\">\n- <feOffset\n- in=\"SourceGraphic\"\n- result=\"offset\"\n- dx=\"1.4400\"\n- dy=\"1.4400\"\n- id=\"feOffset5194\" />\n- <feColorMatrix\n- in=\"offset\"\n- result=\"offset-color\"\n- type=\"matrix\"\n- 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\"\n- id=\"feColorMatrix5196\" />\n- <feMerge\n- id=\"feMerge5198\">\n- <feMergeNode\n- in=\"offset-color\"\n- id=\"feMergeNode5200\" />\n- <feMergeNode\n- in=\"SourceGraphic\"\n- id=\"feMergeNode5202\" />\n- </feMerge>\n- </filter>\n- </defs>\n- <defs\n- id=\"defs5204\">\n- <linearGradient\n- id=\"grad1\">\n- <stop\n- offset=\"0%\"\n- stop-color=\"#ffffff\"\n- stop-opacity=\"1.0000\"\n- id=\"stop5207\" />\n- <stop\n- offset=\"100%\"\n- stop-color=\"#ffffff\"\n- stop-opacity=\"1.0000\"\n- id=\"stop5209\" />\n- </linearGradient>\n- <linearGradient\n- xlink:href=\"#grad1\"\n- id=\"grad2\"\n- x1=\"164.37778\"\n- y1=\"54.035988\"\n- x2=\"164.37778\"\n- y2=\"290.9747\"\n- gradientTransform=\"scale(0.85432014,1.1705214)\"\n- gradientUnits=\"userSpaceOnUse\" />\n- </defs>\n+ id=\"defs13561\">\n+ <marker\n+ inkscape:stockid=\"Arrow2Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker2723\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 157.2997,317.4803 168.6846,0 0,-231.1182 -168.6846,0 0,231.1182 z\"\n- style=\"fill:url(#grad2);fill-rule:evenodd;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;filter:url(#shadow1)\"\n- id=\"path5212\"\n+ id=\"path2721\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(-0.6)\"\n inkscape:connector-curvature=\"0\" />\n- <defs\n- id=\"defs5214\">\n- <filter\n- filterUnits=\"userSpaceOnUse\"\n- id=\"shadow2\"\n- color-interpolation-filters=\"sRGB\">\n- <feOffset\n- in=\"SourceGraphic\"\n- result=\"offset\"\n- dx=\"1.4400\"\n- dy=\"1.4400\"\n- id=\"feOffset5217\" />\n- <feColorMatrix\n- in=\"offset\"\n- result=\"offset-color\"\n- type=\"matrix\"\n- 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\"\n- id=\"feColorMatrix5219\" />\n- <feMerge\n- id=\"feMerge5221\">\n- <feMergeNode\n- in=\"offset-color\"\n- id=\"feMergeNode5223\" />\n- <feMergeNode\n- in=\"SourceGraphic\"\n- id=\"feMergeNode5225\" />\n- </feMerge>\n- </filter>\n- </defs>\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mstart\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mstart\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 157.2997,317.4803 168.6846,0 0,-231.1182 -168.6846,0 0,231.1182 z\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;filter:url(#shadow2)\"\n- id=\"path5227\"\n+ id=\"path899\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(0.6)\"\n inkscape:connector-curvature=\"0\" />\n- </g>\n- <text\n- x=\"192.70265\"\n- y=\"32.792809\"\n- id=\"text5229\"\n- transform=\"scale(1.0151991,0.98502847)\"\n- style=\"font-size:14.63223553px\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5231\"\n- style=\"font-size:9.75482368px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">Loop: for each epoll event</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1002\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <path\n- d=\"m 52.7934,331.6535 0,-272.4094\"\n- 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\"\n- id=\"path5234\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"-79.411301\"\n- y=\"195.44881\"\n- transform=\"matrix(0,-1,1,0,-142.6554,248.2422)\"\n- id=\"text5236\">\n- <tspan\n- font-size=\"12.0000\"\n- id=\"tspan5238\"\n- style=\"font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1003\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <g\n- id=\"Layer1004\">\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mend\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 17.2272,59.2441 71.1324,0 0,-25.2284 -71.1324,0 0,25.2284 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5242\"\n+ id=\"path902\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(-0.6)\"\n inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow1Mstart\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow1Mstart\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 17.2272,59.2441 71.1324,0 0,-25.2284 -71.1324,0 0,25.2284 z\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5244\"\n+ id=\"path881\"\n+ d=\"M 0,0 5,-5 -12.5,0 5,5 Z\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1\"\n+ transform=\"matrix(0.4,0,0,0.4,4,0)\"\n inkscape:connector-curvature=\"0\" />\n- </g>\n- <text\n- x=\"21.2272\"\n- y=\"46.629902\"\n- id=\"text5246\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5248\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">librte_power(VM)</tspan>\n- </text>\n- </g>\n- <text\n- x=\"334.86655\"\n- y=\"44.000031\"\n- id=\"text5250\"\n- transform=\"scale(0.98193323,1.0183992)\"\n- style=\"font-size:19.71731567px\">\n- <tspan\n- font-weight=\"bold\"\n- font-size=\"36.0000\"\n- id=\"tspan5252\"\n- style=\"font-size:59.15194702px;font-weight:bold;fill:#cdcdcd;fill-opacity:1;stroke-opacity:1;font-family:Calibri\">Sequence</tspan>\n- </text>\n- <g\n- id=\"Layer1005\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <path\n- d=\"m 129.4472,331.6535 0,-272.4094\"\n- 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\"\n- id=\"path5255\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"-2.7574999\"\n- y=\"195.44881\"\n- transform=\"matrix(0,-1,1,0,-66.0016,324.896)\"\n- id=\"text5257\">\n- <tspan\n- font-size=\"12.0000\"\n- id=\"tspan5259\"\n- style=\"font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1006\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <g\n- id=\"Layer1007\">\n+ </marker>\n+ <marker\n+ inkscape:isstock=\"true\"\n+ style=\"overflow:visible\"\n+ id=\"marker1748\"\n+ refX=\"0\"\n+ refY=\"0\"\n+ orient=\"auto\"\n+ inkscape:stockid=\"Arrow1Mend\">\n <path\n- d=\"m 89.6487,59.2441 79.5971,0 0,-25.2284 -79.5971,0 0,25.2284 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5263\"\n+ transform=\"matrix(-0.4,0,0,-0.4,-4,0)\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1\"\n+ d=\"M 0,0 5,-5 -12.5,0 5,5 Z\"\n+ id=\"path1746\"\n inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow1Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow1Mend\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 89.6487,59.2441 79.5971,0 0,-25.2284 -79.5971,0 0,25.2284 z\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5265\"\n+ id=\"path884\"\n+ d=\"M 0,0 5,-5 -12.5,0 5,5 Z\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1\"\n+ transform=\"matrix(-0.4,0,0,-0.4,-4,0)\"\n inkscape:connector-curvature=\"0\" />\n- </g>\n- <text\n- x=\"93.648697\"\n- y=\"46.629902\"\n- id=\"text5267\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5269\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">guest_channel(VM)</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1008\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <path\n- d=\"m 240.9449,354.9562 0,-293.7369\"\n- 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\"\n- id=\"path5272\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"98.076401\"\n- y=\"208.0878\"\n- transform=\"matrix(0,-1,1,0,32.8571,449.0327)\"\n- id=\"text5274\">\n- <tspan\n- font-size=\"12.0000\"\n- id=\"tspan5276\"\n- style=\"font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1009\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <g\n- id=\"Layer1010\">\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Lend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Lend\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 195.3689,61.2193 91.152,0 0,-27.2036 -91.152,0 0,27.2036 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5280\"\n+ id=\"path896\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"matrix(-1.1,0,0,-1.1,-1.1,0)\"\n inkscape:connector-curvature=\"0\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow1Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"marker1565-4\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 195.3689,61.2193 91.152,0 0,-27.2036 -91.152,0 0,27.2036 z\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5282\"\n- inkscape:connector-curvature=\"0\" />\n- </g>\n- <text\n- x=\"199.3689\"\n- y=\"47.6175\"\n- id=\"text5284\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5286\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">channel_monitor(Host)</tspan>\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5288\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1011\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <path\n- d=\"m 361.5266,352.9811 0,-293.737\"\n- 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\"\n- id=\"path5291\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"218.6581\"\n- y=\"206.11259\"\n- transform=\"matrix(0,-1,1,0,155.414,567.6392)\"\n- id=\"text5293\">\n- <tspan\n- font-size=\"12.0000\"\n- id=\"tspan5295\"\n- style=\"font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1012\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <g\n- id=\"Layer1013\">\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path1563-2\"\n+ d=\"M 0,0 5,-5 -12.5,0 5,5 Z\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1\"\n+ transform=\"matrix(-0.4,0,0,-0.4,-4,0)\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mend-5\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 313.5013,59.2441 96.0505,0 0,-27.2035 -96.0505,0 0,27.2035 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5299\"\n- inkscape:connector-curvature=\"0\" />\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path902-8\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(-0.6)\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mstart\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mstart-0\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 313.5013,59.2441 96.0505,0 0,-27.2035 -96.0505,0 0,27.2035 z\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5301\"\n- inkscape:connector-curvature=\"0\" />\n- </g>\n- <text\n- x=\"317.50131\"\n- y=\"45.6423\"\n- id=\"text5303\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5305\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">channel_manager(Host)</tspan>\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5307\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1014\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <path\n- d=\"m 458.3741,331.6535 0,-272.4094\"\n- 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\"\n- id=\"path5310\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"326.1694\"\n- y=\"195.44881\"\n- transform=\"matrix(0,-1,1,0,262.9253,653.8229)\"\n- id=\"text5312\">\n- <tspan\n- font-size=\"12.0000\"\n- id=\"tspan5314\"\n- style=\"font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1015\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <g\n- id=\"Layer1016\">\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path899-2\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(0.6)\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mend-5-8\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 413.466,59.2441 89.8163,0 0,-25.2284 -89.8163,0 0,25.2284 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5318\"\n- inkscape:connector-curvature=\"0\" />\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path902-8-5\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(-0.6)\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mstart\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mstart-0-0\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n <path\n- d=\"m 413.466,59.2441 89.8163,0 0,-25.2284 -89.8163,0 0,25.2284 z\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5320\"\n- inkscape:connector-curvature=\"0\" />\n- </g>\n- <text\n- x=\"417.466\"\n- y=\"46.629902\"\n- id=\"text5322\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5324\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">power_manager(Host)</tspan>\n- </text>\n- </g>\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path899-2-6\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(0.6)\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mstart\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mstart-3\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path899-9\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(0.6)\" />\n+ </marker>\n+ <marker\n+ inkscape:stockid=\"Arrow2Mend\"\n+ orient=\"auto\"\n+ refY=\"0\"\n+ refX=\"0\"\n+ id=\"Arrow2Mend-3\"\n+ style=\"overflow:visible\"\n+ inkscape:isstock=\"true\">\n+ <path\n+ inkscape:connector-curvature=\"0\"\n+ id=\"path902-2\"\n+ style=\"fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1\"\n+ 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\"\n+ transform=\"scale(-0.6)\" />\n+ </marker>\n+ </defs>\n+ <sodipodi:namedview\n+ id=\"base\"\n+ pagecolor=\"#ffffff\"\n+ bordercolor=\"#666666\"\n+ borderopacity=\"1.0\"\n+ inkscape:pageopacity=\"0.0\"\n+ inkscape:pageshadow=\"2\"\n+ inkscape:zoom=\"1.4\"\n+ inkscape:cx=\"422.48941\"\n+ inkscape:cy=\"233.91334\"\n+ inkscape:document-units=\"mm\"\n+ inkscape:current-layer=\"layer3\"\n+ showgrid=\"false\"\n+ inkscape:window-width=\"1920\"\n+ inkscape:window-height=\"1137\"\n+ inkscape:window-x=\"1912\"\n+ inkscape:window-y=\"-8\"\n+ inkscape:window-maximized=\"1\" />\n+ <metadata\n+ id=\"metadata13564\">\n+ <rdf:RDF>\n+ <cc:Work\n+ rdf:about=\"\">\n+ <dc:format>image/svg+xml</dc:format>\n+ <dc:type\n+ rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\" />\n+ <dc:title></dc:title>\n+ </cc:Work>\n+ </rdf:RDF>\n+ </metadata>\n <g\n- id=\"Layer1017\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n+ inkscape:groupmode=\"layer\"\n+ id=\"layer3\"\n+ inkscape:label=\"Drawing\"\n+ transform=\"translate(0,-192)\">\n+ <rect\n+ 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\"\n+ id=\"rect6314\"\n+ width=\"54.923889\"\n+ height=\"77.909065\"\n+ x=\"47.091534\"\n+ y=\"211.93466\" />\n+ <rect\n+ style=\"opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581\"\n+ width=\"23.118814\"\n+ height=\"8.4189901\"\n+ x=\"2.0566161\"\n+ y=\"194.62044\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"13.409275\"\n+ y=\"197.77512\"\n+ id=\"text13585\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"13.409275\"\n+ y=\"197.77512\"\n+ 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\"\n+ id=\"tspan13587\">librte_power</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"13.409275\"\n+ y=\"201.30289\"\n+ 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\"\n+ id=\"tspan13591\">(VM)</tspan></text>\n+ <rect\n+ style=\"opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.35277778;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-3\"\n+ width=\"23.118814\"\n+ height=\"8.4189901\"\n+ x=\"26.728348\"\n+ y=\"194.62044\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"38.081005\"\n+ y=\"197.77512\"\n+ id=\"text13585-4\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"38.081005\"\n+ y=\"197.77512\"\n+ 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\"\n+ id=\"tspan13587-4\">guest_channel</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"38.081005\"\n+ y=\"201.30289\"\n+ 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\"\n+ id=\"tspan13591-7\">(VM)</tspan></text>\n+ <rect\n+ style=\"opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.36962408;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-3-9\"\n+ width=\"25.405504\"\n+ height=\"8.4103832\"\n+ x=\"61.705341\"\n+ y=\"194.62886\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"74.146271\"\n+ y=\"197.77512\"\n+ id=\"text13585-4-3\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"74.146271\"\n+ y=\"197.77512\"\n+ 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\"\n+ id=\"tspan13587-4-5\">channel_monitor</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"74.146271\"\n+ y=\"201.30289\"\n+ 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\"\n+ id=\"tspan13591-7-5\">(Host)</tspan></text>\n+ <rect\n+ style=\"opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.3830055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-3-9-9\"\n+ width=\"27.293171\"\n+ height=\"8.4058018\"\n+ x=\"98.781654\"\n+ y=\"194.63556\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"112.44437\"\n+ y=\"197.77512\"\n+ id=\"text13585-4-3-8\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"112.44437\"\n+ y=\"197.77512\"\n+ 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\"\n+ id=\"tspan13587-4-5-3\">channel_manager</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"112.44437\"\n+ y=\"201.30289\"\n+ 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\"\n+ id=\"tspan13591-7-5-5\">(Host)</tspan></text>\n+ <rect\n+ style=\"opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.3830055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-3-9-9-0\"\n+ width=\"27.293173\"\n+ height=\"8.4058018\"\n+ x=\"130.46378\"\n+ y=\"194.63556\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"144.1265\"\n+ y=\"197.186\"\n+ id=\"text13585-4-3-8-4\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"144.1265\"\n+ y=\"197.186\"\n+ 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\"\n+ id=\"tspan13587-4-5-3-0\">power_manager</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"144.1265\"\n+ y=\"200.71378\"\n+ 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\"\n+ id=\"tspan13591-7-5-5-2\">(Host)</tspan></text>\n+ <rect\n+ style=\"opacity:0.50199998;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.3830055;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-3-9-9-0-6\"\n+ width=\"27.293173\"\n+ height=\"8.4058018\"\n+ x=\"160.53162\"\n+ y=\"194.63556\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"174.19434\"\n+ y=\"197.77512\"\n+ id=\"text13585-4-3-8-4-7\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"174.19434\"\n+ y=\"197.77512\"\n+ 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\"\n+ id=\"tspan13587-4-5-3-0-8\">librte_power</tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"174.19434\"\n+ y=\"201.30289\"\n+ 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\"\n+ id=\"tspan13591-7-5-5-2-7\">(Host)</tspan></text>\n <path\n- d=\"m 249.6969,310.3937 0,-209.7638 -9,0 0,209.7638 9,0 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5327\"\n+ 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\"\n+ d=\"m 13.816475,203.11478 v 91.27254\"\n+ id=\"path968\"\n inkscape:connector-curvature=\"0\" />\n <path\n- d=\"m 249.6969,310.3937 0,-209.7638 -9,0 0,209.7638 9,0 z\"\n- style=\"fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5329\"\n+ 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\"\n+ d=\"M 38.538907,203.44886 V 294.7214\"\n+ id=\"path968-7\"\n inkscape:connector-curvature=\"0\" />\n- </g>\n- <g\n- id=\"Layer1018\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5332\">\n- <marker\n- id=\"endMarker1\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"1\"\n- refY=\"5\">\n- <polyline\n- points=\"0,0 10,5 0,10 1,5\"\n- fill=\"solid\"\n- id=\"polyline5335\" />\n- </marker>\n- </defs>\n <path\n- d=\"m 249.6969,154.6299 a 23.4,468 90 0 1 0,18\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker1)\"\n- id=\"path5337\"\n+ 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\"\n+ d=\"m 74.219389,203.71614 v 91.27253\"\n+ id=\"path968-7-8\"\n inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"289.6969\"\n- y=\"163.6299\"\n- id=\"text5339\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5341\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">process_request</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1019\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5344\">\n- <marker\n- id=\"endMarker2\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"1\"\n- refY=\"5\">\n- <polyline\n- points=\"0,0 10,5 0,10 1,5\"\n- fill=\"solid\"\n- id=\"polyline5347\" />\n- </marker>\n- </defs>\n <path\n- d=\"m 249.6969,190.6299 108.6323,-0.7086\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker2)\"\n- id=\"path5349\"\n+ 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\"\n+ d=\"m 113.37436,203.44887 v 91.27254\"\n+ id=\"path968-7-5\"\n inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"271.9838\"\n- y=\"179.6738\"\n- id=\"text5351\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5353\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">get_pcpu_mask()</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1020\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n <path\n- d=\"m 367.3292,225.9213 0,-36 -9,0 0,36 9,0 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5356\"\n+ 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\"\n+ d=\"m 144.6449,202.91433 v 91.27253\"\n+ id=\"path968-7-0\"\n inkscape:connector-curvature=\"0\" />\n <path\n- d=\"m 367.3292,225.9213 0,-36 -9,0 0,36 9,0 z\"\n- style=\"fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5358\"\n- inkscape:connector-curvature=\"0\" />\n- </g>\n- <g\n- id=\"Layer1021\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5361\">\n- <marker\n- id=\"startMarker1\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"9\"\n- refY=\"5\">\n- <polyline\n- points=\"10,0 0,5 10,10 9,5\"\n- fill=\"solid\"\n- id=\"polyline5364\" />\n- </marker>\n- </defs>\n- <path\n- d=\"m 249.6969,226.6299 108.6323,-0.7086\"\n- 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)\"\n- id=\"path5366\"\n+ 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\"\n+ d=\"M 172.17366,203.44887 V 294.7214\"\n+ id=\"path968-7-6\"\n inkscape:connector-curvature=\"0\" />\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5\"\n+ width=\"2.9174259\"\n+ height=\"6.2582946\"\n+ x=\"36.94656\"\n+ y=\"228.71709\" />\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8\"\n+ width=\"2.9174256\"\n+ height=\"6.2582946\"\n+ x=\"12.285574\"\n+ y=\"228.71709\" />\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-0\"\n+ width=\"2.545445\"\n+ height=\"69.763725\"\n+ x=\"72.813026\"\n+ y=\"217.14323\" />\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-3\"\n+ width=\"2.849076\"\n+ height=\"12.337144\"\n+ x=\"112.08347\"\n+ y=\"247.05385\" />\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-3-0\"\n+ width=\"2.849076\"\n+ height=\"12.337144\"\n+ x=\"143.354\"\n+ y=\"270.57895\" />\n+ <rect\n+ style=\"opacity:1;fill:#b3c6dc;fill-opacity:1;stroke:#000000;stroke-width:0.17638889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-9\"\n+ width=\"2.9174259\"\n+ height=\"6.2582946\"\n+ x=\"170.84859\"\n+ y=\"276.69199\" />\n <text\n- x=\"282.43311\"\n- y=\"215.6738\"\n- id=\"text5368\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5370\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">pcpu_mask</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1022\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <path\n- d=\"m 544.3667,331.6535 0,-272.4094\"\n- 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\"\n- id=\"path5373\"\n- inkscape:connector-curvature=\"0\" />\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"25.989178\"\n+ y=\"226.47469\"\n+ id=\"text13585-3\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"25.989178\"\n+ y=\"226.47469\"\n+ 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\"\n+ id=\"tspan13591-3\">rte_power_freq_up()</tspan></text>\n <text\n- x=\"412.1619\"\n- y=\"195.44881\"\n- transform=\"matrix(0,-1,1,0,348.9179,739.8155)\"\n- id=\"text5375\">\n- <tspan\n- font-size=\"12.0000\"\n- id=\"tspan5377\"\n- style=\"font-size:12px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\" />\n- </text>\n- </g>\n- <g\n- id=\"Layer1023\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <g\n- id=\"Layer1024\">\n- <path\n- d=\"m 506.5757,59.2441 75.5819,0 0,-25.2284 -75.5819,0 0,25.2284 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5381\"\n- inkscape:connector-curvature=\"0\" />\n- <path\n- d=\"m 506.5757,59.2441 75.5819,0 0,-25.2284 -75.5819,0 0,25.2284 z\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5383\"\n- inkscape:connector-curvature=\"0\" />\n- </g>\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"24.740162\"\n+ y=\"233.53178\"\n+ id=\"text13585-3-3\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"24.740162\"\n+ y=\"233.53178\"\n+ 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\"\n+ id=\"tspan13591-3-0\">status</tspan></text>\n <text\n- x=\"510.57571\"\n- y=\"46.629902\"\n- id=\"text5385\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5387\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">librte_power(Host)</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1025\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5390\">\n- <marker\n- id=\"endMarker3\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"1\"\n- refY=\"5\">\n- <polyline\n- points=\"0,0 10,5 0,10 1,5\"\n- fill=\"solid\"\n- id=\"polyline5393\" />\n- </marker>\n- </defs>\n- <path\n- d=\"m 249.6969,262.6299 205.4799,-0.7086\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker3)\"\n- id=\"path5395\"\n- inkscape:connector-curvature=\"0\" />\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"56.144329\"\n+ y=\"214.84552\"\n+ id=\"text13585-3-1\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"56.486771\"\n+ y=\"214.84552\"\n+ 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\"\n+ id=\"tspan13591-3-7\">Loop: for each </tspan><tspan\n+ sodipodi:role=\"line\"\n+ x=\"56.144329\"\n+ y=\"217.66774\"\n+ 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\"\n+ id=\"tspan1137\">epoll event</tspan></text>\n <text\n- x=\"303.06931\"\n- y=\"251.6738\"\n- id=\"text5397\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5399\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">scale_freq_up(pcpu_mask)</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1026\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <path\n- d=\"m 464.1768,297.9213 0,-36 -9,0 0,36 9,0 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5402\"\n- inkscape:connector-curvature=\"0\" />\n- <path\n- d=\"m 464.1768,297.9213 0,-36 -9,0 0,36 9,0 z\"\n- style=\"fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5404\"\n- inkscape:connector-curvature=\"0\" />\n- </g>\n- <g\n- id=\"Layer1027\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5407\">\n- <marker\n- id=\"endMarker4\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"1\"\n- refY=\"5\">\n- <polyline\n- points=\"0,0 10,5 0,10 1,5\"\n- fill=\"solid\"\n- id=\"polyline5410\" />\n- </marker>\n- </defs>\n- <path\n- d=\"m 464.1768,279.9213 76.9925,0\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker4)\"\n- id=\"path5412\"\n- inkscape:connector-curvature=\"0\" />\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"91.464294\"\n+ y=\"233.68802\"\n+ id=\"text13585-3-4-9\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"91.464294\"\n+ y=\"233.68802\"\n+ 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\"\n+ id=\"tspan13591-3-6-1\">process_request</tspan></text>\n <text\n- x=\"465.31769\"\n- y=\"269.31949\"\n- id=\"text5414\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5416\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">rte_power_freq_up()</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1028\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"91.556564\"\n+ y=\"245.283\"\n+ id=\"text13585-3-4-9-4\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"91.556564\"\n+ y=\"245.283\"\n+ 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\"\n+ id=\"tspan13591-3-6-1-0\">get_pcpu_mask()</tspan></text>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"90.904503\"\n+ y=\"257.57739\"\n+ id=\"text13585-3-4-9-2\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"90.904503\"\n+ y=\"257.57739\"\n+ 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\"\n+ id=\"tspan13591-3-6-1-05\">pcpu_mask</tspan></text>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"158.28529\"\n+ y=\"281.20514\"\n+ id=\"text13585-3-3-2-1\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"158.28529\"\n+ y=\"281.20514\"\n+ 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\"\n+ id=\"tspan13591-3-0-1-8\">status</tspan></text>\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"159.21713\"\n+ y=\"274.58026\"\n+ id=\"text13585-3-4-9-4-5\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"159.21713\"\n+ y=\"274.58026\"\n+ 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\"\n+ id=\"tspan13591-3-6-1-0-5\">rte_power_freq_up()</tspan></text>\n <path\n- d=\"m 550.1693,297.9213 0,-18 -9,0 0,18 9,0 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5419\"\n- inkscape:connector-curvature=\"0\" />\n+ 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)\"\n+ 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\"\n+ id=\"path873\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"ccc\" />\n <path\n- d=\"m 550.1693,297.9213 0,-18 -9,0 0,18 9,0 z\"\n- style=\"fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5421\"\n+ 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)\"\n+ d=\"M 15.203,228.85074 H 36.946558\"\n+ id=\"path1561\"\n inkscape:connector-curvature=\"0\" />\n- </g>\n- <g\n- id=\"Layer1029\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n <path\n- d=\"m 132.0591,154.4882 0,-18 -9,0 0,18 9,0 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5424\"\n+ 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)\"\n+ d=\"M 15.203001,234.9754 H 36.946559\"\n+ id=\"path1561-3\"\n inkscape:connector-curvature=\"0\" />\n <path\n- d=\"m 132.0591,154.4882 0,-18 -9,0 0,18 9,0 z\"\n- style=\"fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5426\"\n+ 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)\"\n+ d=\"M 39.724979,234.9754 H 72.577131\"\n+ id=\"path1561-0\"\n inkscape:connector-curvature=\"0\" />\n- </g>\n- <g\n- id=\"Layer1030\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5429\">\n- <marker\n- id=\"endMarker5\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"1\"\n- refY=\"5\">\n- <polyline\n- points=\"0,0 10,5 0,10 1,5\"\n- fill=\"solid\"\n- id=\"polyline5432\" />\n- </marker>\n- </defs>\n <path\n- d=\"m 132.0591,154.4882 108.6378,0.1417\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker5)\"\n- id=\"path5434\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"135.90199\"\n- y=\"143.95731\"\n- id=\"text5436\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5438\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">guest_channel_send_msg()</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1031\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5441\">\n- <marker\n- id=\"startMarker2\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"9\"\n- refY=\"5\">\n- <polyline\n- points=\"10,0 0,5 10,10 9,5\"\n- fill=\"solid\"\n- id=\"polyline5444\" />\n- </marker>\n- </defs>\n+ 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)\"\n+ d=\"m 75.241702,246.95037 36.841758,0.10349\"\n+ id=\"path1561-5\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n <path\n- d=\"m 464.1768,297.9213 76.9925,0\"\n- 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)\"\n- id=\"path5446\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"486.673\"\n- y=\"287.31949\"\n- id=\"text5448\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5450\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">status</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1032\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5453\">\n- <marker\n- id=\"startMarker3\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"9\"\n- refY=\"5\">\n- <polyline\n- points=\"10,0 0,5 10,10 9,5\"\n- fill=\"solid\"\n- id=\"polyline5456\" />\n- </marker>\n- </defs>\n+ 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)\"\n+ d=\"M 75.372816,259.391 H 112.08346\"\n+ id=\"path1561-3-9\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n <path\n- d=\"m 249.6969,298.6299 205.4799,-0.7086\"\n- 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)\"\n- id=\"path5458\"\n- inkscape:connector-curvature=\"0\" />\n- <text\n- x=\"336.4306\"\n- y=\"287.6738\"\n- id=\"text5460\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5462\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">status</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1033\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n+ 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)\"\n+ d=\"M 75.241704,270.47547 143.354,270.57896\"\n+ id=\"path1561-5-8\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n <path\n- d=\"m 55.4053,154.4882 0,-18 -9,0 0,18 9,0 z\"\n- style=\"fill:#9ab3d1;fill-rule:evenodd;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round\"\n- id=\"path5465\"\n- inkscape:connector-curvature=\"0\" />\n+ 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)\"\n+ d=\"M 75.372824,282.9161 H 143.354\"\n+ id=\"path1561-3-9-8\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n <path\n- d=\"m 55.4053,154.4882 0,-18 -9,0 0,18 9,0 z\"\n- style=\"fill:none;stroke:#000000;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none\"\n- id=\"path5467\"\n- inkscape:connector-curvature=\"0\" />\n- </g>\n- <g\n- id=\"Layer1034\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5470\">\n- <marker\n- id=\"endMarker6\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"1\"\n- refY=\"5\">\n- <polyline\n- points=\"0,0 10,5 0,10 1,5\"\n- fill=\"solid\"\n- id=\"polyline5473\" />\n- </marker>\n- </defs>\n+ 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)\"\n+ d=\"m 146.29869,276.69198 h 24.54989\"\n+ id=\"path1561-4\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n <path\n- d=\"m 55.4053,136.4882 67.6538,0\"\n- style=\"fill:none;stroke:#1f497d;stroke-width:0.47999999;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;marker-end:url(#endMarker6)\"\n- id=\"path5475\"\n- inkscape:connector-curvature=\"0\" />\n+ 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)\"\n+ d=\"m 146.43232,282.81664 h 24.41626\"\n+ id=\"path1561-3-7\"\n+ inkscape:connector-curvature=\"0\"\n+ sodipodi:nodetypes=\"cc\" />\n+ <rect\n+ style=\"opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-4\"\n+ width=\"2.9174259\"\n+ height=\"3.3636653\"\n+ x=\"111.91566\"\n+ y=\"265.54959\" />\n+ <rect\n+ style=\"opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-4-8\"\n+ width=\"2.9174259\"\n+ height=\"3.3636653\"\n+ x=\"45.63282\"\n+ y=\"230.29805\" />\n <text\n- x=\"51.876801\"\n- y=\"125.8864\"\n- id=\"text5477\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5479\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">rte_power_freq_up()</tspan>\n- </text>\n- </g>\n- <g\n- id=\"Layer1035\"\n- transform=\"matrix(1.6134241,0,0,1.6733416,-27.320753,68.655772)\">\n- <defs\n- id=\"defs5482\">\n- <marker\n- id=\"startMarker4\"\n- markerUnits=\"strokeWidth\"\n- orient=\"auto\"\n- markerWidth=\"8\"\n- markerHeight=\"6\"\n- viewBox=\"0 0 10 10\"\n- refX=\"9\"\n- refY=\"5\">\n- <polyline\n- points=\"10,0 0,5 10,10 9,5\"\n- fill=\"solid\"\n- id=\"polyline5485\" />\n- </marker>\n- </defs>\n- <path\n- d=\"m 55.4053,154.4882 72.1538,0\"\n- 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)\"\n- id=\"path5487\"\n- inkscape:connector-curvature=\"0\" />\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"56.678867\"\n+ y=\"232.61894\"\n+ id=\"text13585-3-4\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"56.678867\"\n+ y=\"232.61894\"\n+ 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\"\n+ id=\"tspan13591-3-6\">guest_channel_send_msg()</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-4-9\"\n+ width=\"2.9174259\"\n+ height=\"3.3636653\"\n+ x=\"100.28944\"\n+ y=\"265.70587\" />\n+ <text\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"110.37933\"\n+ y=\"268.28806\"\n+ id=\"text13585-3-4-9-2-6\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"110.37933\"\n+ y=\"268.28806\"\n+ 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\"\n+ id=\"tspan13591-3-6-1-05-4\">scale_freq_up(pcpu_mask)</tspan></text>\n+ <rect\n+ style=\"opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.12931521;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\"\n+ id=\"rect13581-8-5-4-99\"\n+ width=\"2.9174259\"\n+ height=\"3.3636653\"\n+ x=\"111.78201\"\n+ y=\"278.54019\" />\n <text\n- x=\"75.482201\"\n- y=\"143.8864\"\n- id=\"text5489\">\n- <tspan\n- font-size=\"8.0000\"\n- id=\"tspan5491\"\n- style=\"font-size:8px;fill:#000000;fill-opacity:1;stroke-opacity:1;font-family:Arial\">status</tspan>\n- </text>\n+ xml:space=\"preserve\"\n+ 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\"\n+ x=\"113.21278\"\n+ y=\"280.93787\"\n+ id=\"text13585-3-3-2\"><tspan\n+ sodipodi:role=\"line\"\n+ x=\"113.21278\"\n+ y=\"280.93787\"\n+ 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\"\n+ id=\"tspan13591-3-0-1\">status</tspan></text>\n </g>\n </svg>\ndiff --git a/doc/guides/sample_app_ug/vm_power_management.rst b/doc/guides/sample_app_ug/vm_power_management.rst\nindex bb2aa4faf..d43ba9cbe 100644\n--- a/doc/guides/sample_app_ug/vm_power_management.rst\n+++ b/doc/guides/sample_app_ug/vm_power_management.rst\n@@ -1,119 +1,128 @@\n .. SPDX-License-Identifier: BSD-3-Clause\n Copyright(c) 2010-2014 Intel Corporation.\n \n-VM Power Management Application\n-===============================\n-\n-Introduction\n-------------\n-\n-Applications running in Virtual Environments have an abstract view of\n-the underlying hardware on the Host, in particular applications cannot see\n-the binding of virtual to physical hardware.\n-When looking at CPU resourcing, the pinning of Virtual CPUs(vCPUs) to\n-Host Physical CPUs(pCPUS) is not apparent to an application\n-and this pinning may change over time.\n-Furthermore, Operating Systems on virtual machines do not have the ability\n-to govern their own power policy; the Machine Specific Registers (MSRs)\n-for enabling P-State transitions are not exposed to Operating Systems\n-running on Virtual Machines(VMs).\n-\n-The Virtual Machine Power Management solution shows an example of\n-how a DPDK application can indicate its processing requirements using VM local\n-only information(vCPU/lcore, etc.) to a Host based Monitor which is responsible\n-for accepting requests for frequency changes for a vCPU, translating the vCPU\n-to a pCPU via libvirt and affecting the change in frequency.\n-\n-The solution is comprised of two high-level components:\n-\n-#. Example Host Application\n-\n- Using a Command Line Interface(CLI) for VM->Host communication channel management\n- allows adding channels to the Monitor, setting and querying the vCPU to pCPU pinning,\n- inspecting and manually changing the frequency for each CPU.\n- The CLI runs on a single lcore while the thread responsible for managing\n- VM requests runs on a second lcore.\n-\n- VM requests arriving on a channel for frequency changes are passed\n- to the librte_power ACPI cpufreq sysfs based library.\n- The Host Application relies on both qemu-kvm and libvirt to function.\n-\n- This monitoring application is responsible for:\n-\n- - Accepting requests from client applications: Client applications can\n- request frequency changes for a vCPU, translating\n- the vCPU to a pCPU via libvirt and affecting the change in frequency.\n-\n- - Accepting policies from client applications: Client application can\n- send a policy to the host application. The\n- host application will then apply the rules of the policy independent\n- of the application. For example, the policy can contain time-of-day\n- information for busy/quiet periods, and the host application can scale\n- up/down the relevant cores when required. See the details of the guest\n- application below for more information on setting the policy values.\n-\n- - Out-of-band monitoring of workloads via cores hardware event counters:\n- The host application can manage power for an application in a virtualised\n- OR non-virtualised environment by looking at the event counters of the\n- cores and taking action based on the branch hit/miss ratio. See the host\n- application '--core-list' command line parameter below.\n-\n-#. librte_power for Virtual Machines\n-\n- Using an alternate implementation for the librte_power API, requests for\n- frequency changes are forwarded to the host monitor rather than\n- the APCI cpufreq sysfs interface used on the host.\n-\n- The l3fwd-power application will use this implementation when deployed on a VM\n- (see :doc:`l3_forward_power_man`).\n+Virtual Machine Power Management Application\n+============================================\n+\n+Applications running in virtual environments have an abstract view of\n+the underlying hardware on the host. Specifically, applications cannot\n+see the binding of virtual components to physical hardware. When looking\n+at CPU resourcing, the pinning of Virtual CPUs (vCPUs) to Physical CPUs\n+(pCPUs) on the host is not apparent to an application and this pinning\n+may change over time. In addition, operating systems on Virtual Machines\n+(VMs) do not have the ability to govern their own power policy. The\n+Machine Specific Registers (MSRs) for enabling P-state transitions are\n+not exposed to the operating systems running on the VMs.\n+\n+The solution demonstrated in this sample application shows an example of\n+how a DPDK application can indicate its processing requirements using\n+VM-local only information (vCPU/lcore, and so on) to a host resident VM\n+Power Manager. The VM Power Manager is responsible for:\n+\n+- **Accepting requests for frequency changes for a vCPU**\n+- **Translating the vCPU to a pCPU using libvirt**\n+- **Performing the change in frequency**\n+\n+This application demonstrates the following features:\n+\n+- **The handling of VM application requests to change frequency.**\n+ VM applications can request frequency changes for a vCPU. The VM\n+ Power Management Application uses libvirt to translate that\n+ virtual CPU (vCPU) request to a physical CPU (pCPU) request and\n+ performs the frequency change.\n+\n+- **The acceptance of power management policies from VM applications.**\n+ A VM application can send a policy to the host application. The\n+ policy contains rules that define the power management behaviour\n+ of the VM. The host application then applies the rules of the\n+ policy independent of the VM application. For example, the\n+ policy can contain time-of-day information for busy/quiet\n+ periods, and the host application can scale up/down the relevant\n+ cores when required. See :ref:`sending_policy` for information on\n+ setting policy values.\n+\n+- **Out-of-band monitoring of workloads using core hardware event counters.**\n+ The host application can manage power for an application by looking\n+ at the event counters of the cores and taking action based on the\n+ branch miss/hit ratio. See :ref:`enabling_out_of_band`.\n+\n+ **Note**: This functionality also applies in non-virtualised environments.\n+\n+In addition to the ``librte_power`` library used on the host, the\n+application uses a special version of ``librte_power`` on each VM, which\n+directs frequency changes and policies to the host monitor rather than\n+the APCI ``cpufreq`` ``sysfs`` interface used on the host in non-virtualised\n+environments.\n \n .. _figure_vm_power_mgr_highlevel:\n \n .. figure:: img/vm_power_mgr_highlevel.*\n \n- Highlevel Solution\n+Sample Application Architecture Overview\n+----------------------------------------\n+\n+The VM power management solution employs ``qemu-kvm`` to provide\n+communications channels between the host and VMs in the form of a\n+``virtio-serial`` connection that appears as a para-virtualised serial\n+device on a VM and can be configured to use various backends on the\n+host. For this example, the configuration of each ``virtio-serial`` endpoint\n+on the host as an ``AF_UNIX`` file socket, supporting poll/select and\n+``epoll`` for event notification. In this example, each channel endpoint on\n+the host is monitored for ``EPOLLIN`` events using ``epoll``. Each channel\n+is specified as ``qemu-kvm`` arguments or as ``libvirt`` XML for each VM,\n+where each VM can have several channels up to a maximum of 64 per VM. In this\n+example, each DPDK lcore on a VM has exclusive access to a channel.\n+\n+To enable frequency changes from within a VM, the VM forwards a\n+``librte_power`` request over the ``virtio-serial`` channel to the host. Each\n+request contains the vCPU and power command (scale up/down/min/max). The\n+API for the host ``librte_power`` and guest ``librte_power`` is consistent\n+across environments, with the selection of VM or host implementation\n+determined automatically at runtime based on the environment. On\n+receiving a request, the host translates the vCPU to a pCPU using the\n+libvirt API before forwarding it to the host ``librte_power``.\n \n \n-Overview\n---------\n-\n-VM Power Management employs qemu-kvm to provide communications channels\n-between the host and VMs in the form of Virtio-Serial which appears as\n-a paravirtualized serial device on a VM and can be configured to use\n-various backends on the host. For this example each Virtio-Serial endpoint\n-on the host is configured as AF_UNIX file socket, supporting poll/select\n-and epoll for event notification.\n-In this example each channel endpoint on the host is monitored via\n-epoll for EPOLLIN events.\n-Each channel is specified as qemu-kvm arguments or as libvirt XML for each VM,\n-where each VM can have a number of channels up to a maximum of 64 per VM,\n-in this example each DPDK lcore on a VM has exclusive access to a channel.\n-\n-To enable frequency changes from within a VM, a request via the librte_power interface\n-is forwarded via Virtio-Serial to the host, each request contains the vCPU\n-and power command(scale up/down/min/max).\n-The API for host and guest librte_power is consistent across environments,\n-with the selection of VM or Host Implementation determined at automatically\n-at runtime based on the environment.\n-\n-Upon receiving a request, the host translates the vCPU to a pCPU via\n-the libvirt API before forwarding to the host librte_power.\n-\n .. _figure_vm_power_mgr_vm_request_seq:\n \n .. figure:: img/vm_power_mgr_vm_request_seq.*\n \n- VM request to scale frequency\n-\n+In addition to the ability to send power management requests to the\n+host, a VM can send a power management policy to the host. In some\n+cases, using a power management policy is a preferred option because it\n+can eliminate possible latency issues that can occur when sending power\n+management requests. Once the VM sends the policy to the host, the VM no\n+longer needs to worry about power management, because the host now\n+manages the power for the VM based on the policy. The policy can specify\n+power behavior that is based on incoming traffic rates or time-of-day\n+power adjustment (busy/quiet hour power adjustment for example). See\n+:ref:`sending_policy` for more information.\n+\n+One method of power management is to sense how busy a core is when\n+processing packets and adjusting power accordingly. One technique for\n+doing this is to monitor the ratio of the branch miss to branch hits\n+counters and scale the core power accordingly. This technique is based\n+on the premise that when a core is not processing packets, the ratio of\n+branch misses to branch hits is very low, but when the core is\n+processing packets, it is measurably higher. The implementation of this\n+capability is as a policy of type ``BRANCH_RATIO``.\n+See :ref:`sending_policy` for more information on using the\n+BRANCH_RATIO policy option.\n+\n+A JSON interface enables the specification of power management requests\n+and policies in JSON format. The JSON interfaces provide a more\n+convenient and more easily interpreted interface for the specification\n+of requests and policies. See :ref:`power_man_requests` for more information.\n \n Performance Considerations\n ~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n-While Haswell Microarchitecture allows for independent power control for each core,\n-earlier Microarchtectures do not offer such fine grained control.\n-When deployed on pre-Haswell platforms greater care must be taken in selecting\n-which cores are assigned to a VM, for instance a core will not scale down\n-until its sibling is similarly scaled.\n+While the Haswell microarchitecture allows for independent power control\n+for each core, earlier microarchitectures do not offer such fine-grained\n+control. When deploying on pre-Haswell platforms, greater care must be\n+taken when selecting which cores are assigned to a VM, for example, a\n+core does not scale down in frequency until all of its siblings are\n+similarly scaled down.\n \n Configuration\n -------------\n@@ -121,636 +130,541 @@ Configuration\n BIOS\n ~~~~\n \n-Enhanced Intel SpeedStep® Technology must be enabled in the platform BIOS\n-if the power management feature of DPDK is to be used.\n-Otherwise, the sys file folder /sys/devices/system/cpu/cpu0/cpufreq will not exist,\n-and the CPU frequency-based power management cannot be used.\n-Consult the relevant BIOS documentation to determine how these settings\n-can be accessed.\n+To use the power management features of the DPDK, you must enable\n+Enhanced Intel SpeedStep® Technology in the platform BIOS. Otherwise,\n+the ``sys`` file folder ``/sys/devices/system/cpu/cpu0/cpufreq`` does not\n+exist, and you cannot use CPU frequency-based power management. Refer to the\n+relevant BIOS documentation to determine how to access these settings.\n \n Host Operating System\n ~~~~~~~~~~~~~~~~~~~~~\n \n-The DPDK Power Library can use either the *acpi_cpufreq* or *intel_pstate*\n-kernel driver for the management of core frequencies. In many cases\n-the *intel_pstate* driver is the default Power Management environment.\n+The DPDK Power Management library can use either the ``acpi_cpufreq`` or\n+the ``intel_pstate`` kernel driver for the management of core frequencies. In\n+many cases, the ``intel_pstate`` driver is the default power management\n+environment.\n \n-Should the *acpi-cpufreq* driver be required, the *intel_pstate* module must\n-be disabled, and *apci_cpufreq* module loaded in its place.\n+Should the ``acpi-cpufreq driver`` be required, the ``intel_pstate``\n+module must be disabled, and the ``acpi-cpufreq`` module loaded in its place.\n \n-To disable *intel_pstate* driver, add the following to the grub Linux\n-command line:\n+To disable the ``intel_pstate`` driver, add the following to the ``grub``\n+Linux command line:\n \n-.. code-block:: console\n+ ``intel_pstate=disable``\n \n- intel_pstate=disable\n+On reboot, load the ``acpi_cpufreq`` module:\n \n-Upon rebooting, load the *acpi_cpufreq* module:\n-\n-.. code-block:: console\n-\n- modprobe acpi_cpufreq\n+ ``modprobe acpi_cpufreq``\n \n Hypervisor Channel Configuration\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n-Virtio-Serial channels are configured via libvirt XML:\n-\n+Configure ``virtio-serial`` channels using ``libvirt`` XML.\n+The XML structure is as follows: \n \n-.. code-block:: xml\n+.. code-block:: XML\n \n- <name>{vm_name}</name>\n- <controller type='virtio-serial' index='0'>\n- <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>\n- </controller>\n- <channel type='unix'>\n- <source mode='bind' path='/tmp/powermonitor/{vm_name}.{channel_num}'/>\n- <target type='virtio' name='virtio.serial.port.poweragent.{vm_channel_num}'/>\n- <address type='virtio-serial' controller='0' bus='0' port='{N}'/>\n- </channel>\n+ <name>{vm_name}</name>\n+ <controller type='virtio-serial' index='0'>\n+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>\n+ </controller>\n+ <channel type='unix'>\n+ <source mode='bind' path='/tmp/powermonitor/{vm_name}.{channel_num}'/>\n+ <target type='virtio' name='virtio.serial.port.poweragent.{vm_channel_num}'/>\n+ <address type='virtio-serial' controller='0' bus='0' port='{N}'/>\n+ </channel>\n \n+Where a single controller of type ``virtio-serial`` is created, up to 32\n+channels can be associated with a single controller, and multiple\n+controllers can be specified. The convention is to use the name of the\n+VM in the host path ``{vm_name}`` and to increment ``{channel_num}`` for each\n+channel. Likewise, the port value ``{N}`` must be incremented for each\n+channel.\n \n-Where a single controller of type *virtio-serial* is created and up to 32 channels\n-can be associated with a single controller and multiple controllers can be specified.\n-The convention is to use the name of the VM in the host path *{vm_name}* and\n-to increment *{channel_num}* for each channel, likewise the port value *{N}*\n-must be incremented for each channel.\n-\n-Each channel on the host will appear in *path*, the directory */tmp/powermonitor/*\n-must first be created and given qemu permissions\n+On the host, for each channel to appear in the path, ensure the creation\n+of the ``/tmp/powermonitor/`` directory and the assignment of ``qemu``\n+permissions:\n \n .. code-block:: console\n \n- mkdir /tmp/powermonitor/\n- chown qemu:qemu /tmp/powermonitor\n+ mkdir /tmp/powermonitor/\n+ chown qemu:qemu /tmp/powermonitor\n+\n+Note that files and directories in ``/tmp`` are generally removed when\n+rebooting the host and you may need to perform the previous steps after\n+each reboot.\n \n-Note that files and directories within /tmp are generally removed upon\n-rebooting the host and the above steps may need to be carried out after each reboot.\n+The serial device as it appears on a VM is configured with the target\n+element attribute name and must be in the form:\n+``virtio.serial.port.poweragent.{vm_channel_num}``, where\n+``vm_channel_num`` is typically the lcore channel to be used in\n+DPDK VM applications.\n \n-The serial device as it appears on a VM is configured with the *target* element attribute *name*\n-and must be in the form of *virtio.serial.port.poweragent.{vm_channel_num}*,\n-where *vm_channel_num* is typically the lcore channel to be used in DPDK VM applications.\n+Each channel on a VM is present at:\n \n-Each channel on a VM will be present at */dev/virtio-ports/virtio.serial.port.poweragent.{vm_channel_num}*\n+``/dev/virtio-ports/virtio.serial.port.poweragent.{vm_channel_num}``\n \n Compiling and Running the Host Application\n ------------------------------------------\n \n-Compiling\n-~~~~~~~~~\n+Compiling the Host Application\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n-For information on compiling DPDK and the sample applications\n+For information on compiling the DPDK and sample applications, see\n see :doc:`compiling`.\n \n-The application is located in the ``vm_power_manager`` sub-directory.\n+The application is located in the ``vm_power_manager`` subdirectory.\n \n To build just the ``vm_power_manager`` application using ``make``:\n \n .. code-block:: console\n \n- export RTE_SDK=/path/to/rte_sdk\n- export RTE_TARGET=build\n- cd ${RTE_SDK}/examples/vm_power_manager/\n- make\n+ export RTE_SDK=/path/to/rte_sdk\n+ export RTE_TARGET=build\n+ cd ${RTE_SDK}/examples/vm_power_manager/\n+ make\n \n-The resulting binary will be ${RTE_SDK}/build/examples/vm_power_manager\n+The resulting binary is ``${RTE_SDK}/build/examples/vm_power_manager``.\n \n-To build just the ``vm_power_manager`` application using ``meson/ninja``:\n+To build just the ``vm_power_manager`` application using ``meson``/``ninja``:\n \n .. code-block:: console\n \n- export RTE_SDK=/path/to/rte_sdk\n- cd ${RTE_SDK}\n- meson build\n- cd build\n- ninja\n- meson configure -Dexamples=vm_power_manager\n- ninja\n+ export RTE_SDK=/path/to/rte_sdk\n+ cd ${RTE_SDK}\n+ meson build\n+ cd build\n+ ninja\n+ meson configure -Dexamples=vm_power_manager\n+ ninja\n \n-The resulting binary will be ${RTE_SDK}/build/examples/dpdk-vm_power_manager\n+The resulting binary is ``${RTE_SDK}/build/examples/dpdk-vm_power_manager``.\n \n-Running\n-~~~~~~~\n+Running the Host Application\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n-The application does not have any specific command line options other than *EAL*:\n+The application does not have any specific command line options other\n+than the EAL options:\n \n .. code-block:: console\n \n- ./build/vm_power_mgr [EAL options]\n+ ./build/vm_power_mgr [EAL options]\n \n-The application requires exactly two cores to run, one core is dedicated to the CLI,\n-while the other is dedicated to the channel endpoint monitor, for example to run\n-on cores 0 & 1 on a system with 4 memory channels:\n+The application requires exactly two cores to run. One core for the CLI\n+and the other for the channel endpoint monitor. For example, to run on\n+cores 0 and 1 on a system with four memory channels, issue the command:\n \n .. code-block:: console\n \n- ./build/vm_power_mgr -l 0-1 -n 4\n+ ./build/vm_power_mgr -l 0-1 -n 4\n \n-After successful initialization the user is presented with VM Power Manager CLI:\n+After successful initialization, the VM Power Manager CLI prompt appears:\n \n .. code-block:: console\n \n- vm_power>\n+ vm_power>\n \n-Virtual Machines can now be added to the VM Power Manager:\n+Now, it is possible to add virtual machines to the VM Power Manager:\n \n .. code-block:: console\n \n- vm_power> add_vm {vm_name}\n-\n-When a {vm_name} is specified with the *add_vm* command a lookup is performed\n-with libvirt to ensure that the VM exists, {vm_name} is used as an unique identifier\n-to associate channels with a particular VM and for executing operations on a VM within the CLI.\n-VMs do not have to be running in order to add them.\n+ vm_power> add_vm {vm_name}\n \n-A number of commands can be issued via the CLI in relation to VMs:\n+When a ``{vm_name}`` is specified with the ``add_vm`` command, a lookup is\n+performed with ``libvirt`` to ensure that the VM exists. ``{vm_name}`` is a\n+unique identifier to associate channels with a particular VM and for\n+executing operations on a VM within the CLI. VMs do not have to be\n+running to add them.\n \n- Remove a Virtual Machine identified by {vm_name} from the VM Power Manager.\n+It is possible to issue several commands from the CLI to manage VMs.\n \n- .. code-block:: console\n-\n- rm_vm {vm_name}\n-\n- Add communication channels for the specified VM, the virtio channels must be enabled\n- in the VM configuration(qemu/libvirt) and the associated VM must be active.\n- {list} is a comma-separated list of channel numbers to add, using the keyword 'all'\n- will attempt to add all channels for the VM:\n-\n- .. code-block:: console\n-\n- add_channels {vm_name} {list}|all\n-\n- Enable or disable the communication channels in {list}(comma-separated)\n- for the specified VM, alternatively list can be replaced with keyword 'all'.\n- Disabled channels will still receive packets on the host, however the commands\n- they specify will be ignored. Set status to 'enabled' to begin processing requests again:\n-\n- .. code-block:: console\n-\n- set_channel_status {vm_name} {list}|all enabled|disabled\n-\n- Print to the CLI the information on the specified VM, the information\n- lists the number of vCPUS, the pinning to pCPU(s) as a bit mask, along with\n- any communication channels associated with each VM, along with the status of each channel:\n-\n- .. code-block:: console\n+Remove the virtual machine identified by ``{vm_name}`` from the VM Power\n+Manager using the command:\n \n- show_vm {vm_name}\n-\n- Set the binding of Virtual CPU on VM with name {vm_name} to the Physical CPU mask:\n-\n- .. code-block:: console\n+.. code-block:: console\n \n- set_pcpu_mask {vm_name} {vcpu} {pcpu}\n+ rm_vm {vm_name}\n \n- Set the binding of Virtual CPU on VM to the Physical CPU:\n+Add communication channels for the specified VM using the following\n+command. The ``virtio`` channels must be enabled in the VM configuration\n+(``qemu/libvirt``) and the associated VM must be active. ``{list}`` is a\n+comma-separated list of channel numbers to add. Specifying the keyword\n+``all`` attempts to add all channels for the VM:\n \n- .. code-block:: console\n+.. code-block:: console\n \n- set_pcpu {vm_name} {vcpu} {pcpu}\n+ set_pcpu {vm_name} {vcpu} {pcpu}\n \n Enable query of physical core information from a VM:\n \n- .. code-block:: console\n+.. code-block:: console\n \n- set_query {vm_name} enable|disable\n+ set_query {vm_name} enable|disable\n \n Manual control and inspection can also be carried in relation CPU frequency scaling:\n \n Get the current frequency for each core specified in the mask:\n \n- .. code-block:: console\n+.. code-block:: console\n \n- show_cpu_freq_mask {mask}\n+ show_cpu_freq_mask {mask}\n \n Set the current frequency for the cores specified in {core_mask} by scaling each up/down/min/max:\n \n- .. code-block:: console\n+.. code-block:: console\n \n- set_cpu_freq {core_mask} up|down|min|max\n+ add_channels {vm_name} {list}|all\n \n- Get the current frequency for the specified core:\n+Enable or disable the communication channels in ``{list}`` (comma-separated)\n+for the specified VM. Alternatively, replace ``list`` with the keyword\n+``all``. Disabled channels receive packets on the host. However, the commands\n+they specify are ignored. Set the status to enabled to begin processing\n+requests again:\n \n- .. code-block:: console\n-\n- show_cpu_freq {core_num}\n+.. code-block:: console\n \n- Set the current frequency for the specified core by scaling up/down/min/max:\n+ set_channel_status {vm_name} {list}|all enabled|disabled\n \n- .. code-block:: console\n+Print to the CLI information on the specified VM. The information lists\n+the number of vCPUs, the pinning to pCPU(s) as a bit mask, along with\n+any communication channels associated with each VM, and the status of\n+each channel:\n \n- set_cpu_freq {core_num} up|down|min|max\n+.. code-block:: console\n \n-There are also some command line parameters for enabling the out-of-band\n-monitoring of branch ratio on cores doing busy polling via PMDs.\n+ show_vm {vm_name}\n \n- .. code-block:: console\n+Set the binding of a virtual CPU on a VM with name ``{vm_name}`` to the\n+physical CPU mask:\n \n- --core-list {list of cores}\n+.. code-block:: console\n \n- When this parameter is used, the list of cores specified will monitor the ratio\n- between branch hits and branch misses. A tightly polling PMD thread will have a\n- very low branch ratio, so the core frequency will be scaled down to the minimum\n- allowed value. When packets are received, the code path will alter, causing the\n- branch ratio to increase. When the ratio goes above the ratio threshold, the\n- core frequency will be scaled up to the maximum allowed value.\n+ set_pcpu_mask {vm_name} {vcpu} {pcpu}\n \n+Set the binding of the virtual CPU on the VM to the physical CPU:\n+ \n .. code-block:: console\n \n- --branch-ratio {ratio}\n-\n- The branch ratio is a floating point number that specifies the threshold at which\n- to scale up or down for the given workload. The default branch ratio is 0.01,\n- and will need to be adjusted for different workloads.\n-\n-\n-\n-JSON API\n-~~~~~~~~\n-\n-In addition to the command line interface for host command and a virtio-serial\n-interface for VM power policies, there is also a JSON interface through which\n-power commands and policies can be sent. This functionality adds a dependency\n-on the Jansson library, and the Jansson development package must be installed\n-on the system before the JSON parsing functionality is included in the app.\n-This is achieved by:\n-\n- .. code-block:: javascript\n+ set_pcpu {vm_name} {vcpu} {pcpu}\n \n- apt-get install libjansson-dev\n+It is also possible to perform manual control and inspection in relation\n+to CPU frequency scaling.\n \n-The command and package name may be different depending on your operating\n-system. It's worth noting that the app will successfully build without this\n-package present, but a warning is shown during compilation, and the JSON\n-parsing functionality will not be present in the app.\n+Get the current frequency for each core specified in the mask:\n \n-Sending a command or policy to the power manager application is achieved by\n-simply opening a fifo file, writing a JSON string to that fifo, and closing\n-the file. In actual implementation every core has own dedicated fifo[0..n],\n-where n is number of the last available core.\n-Having a dedicated fifo file per core allows using standard filesystem permissions\n-to ensure a given container can only write JSON commands into fifos it is allowed\n-to use.\n-\n-The fifo is at /tmp/powermonitor/fifo[0..n]\n-\n-For example all cmds put to the /tmp/powermonitor/fifo7, will have\n-effect only on CPU[7].\n-\n-The JSON string can be a policy or instruction, and takes the following\n-format:\n-\n- .. code-block:: javascript\n-\n- {\"packet_type\": {\n- \"pair_1\": value,\n- \"pair_2\": value\n- }}\n-\n-The 'packet_type' header can contain one of two values, depending on\n-whether a policy or power command is being sent. The two possible values are\n-\"policy\" and \"instruction\", and the expected name-value pairs is different\n-depending on which type is being sent.\n-\n-The pairs are the format of standard JSON name-value pairs. The value type\n-varies between the different name/value pairs, and may be integers, strings,\n-arrays, etc. Examples of policies follow later in this document. The allowed\n-names and value types are as follows:\n-\n-\n-:Pair Name: \"command\"\n-:Description: The type of packet we're sending to the power manager. We can be\n- creating or destroying a policy, or sending a direct command to adjust\n- the frequency of a core, similar to the command line interface.\n-:Type: string\n-:Values:\n-\n- :CREATE: used when creating a new policy,\n- :DESTROY: used when removing a policy,\n- :POWER: used when sending an immediate command, max, min, etc.\n-:Required: yes\n-:Example:\n+.. code-block:: console\n \n- .. code-block:: javascript\n+ show_cpu_freq_mask {mask}\n \n- \"command\", \"CREATE\"\n+Set the current frequency for the cores specified in ``{core_mask}`` by\n+scaling each up/down/min/max:\n \n+.. code-block:: console\n \n-:Pair Name: \"policy_type\"\n-:Description: Type of policy to apply. Please see vm_power_manager documentation\n- for more information on the types of policies that may be used.\n-:Type: string\n-:Values:\n+ set_cpu_freq {core_mask} up|down|min|max\n \n- :TIME: Time-of-day policy. Frequencies of the relevant cores are\n- scaled up/down depending on busy and quiet hours.\n- :TRAFFIC: This policy takes statistics from the NIC and scales up\n- and down accordingly.\n- :WORKLOAD: This policy looks at how heavily loaded the cores are,\n- and scales up and down accordingly.\n- :BRANCH_RATIO: This out-of-band policy can look at the ratio between\n- branch hits and misses on a core, and is useful for detecting\n- how much packet processing a core is doing.\n-:Required: only for CREATE/DESTROY command\n-:Example:\n+Get the current frequency for the specified core:\n \n- .. code-block:: javascript\n+.. code-block:: console\n \n- \"policy_type\", \"TIME\"\n+ show_cpu_freq {core_num}\n \n-:Pair Name: \"busy_hours\"\n-:Description: The hours of the day in which we scale up the cores for busy\n- times.\n-:Type: array of integers\n-:Values: array with list of hour numbers, (0-23)\n-:Required: only for TIME policy\n-:Example:\n-\n- .. code-block:: javascript\n-\n- \"busy_hours\":[ 17, 18, 19, 20, 21, 22, 23 ]\n-\n-:Pair Name: \"quiet_hours\"\n-:Description: The hours of the day in which we scale down the cores for quiet\n- times.\n-:Type: array of integers\n-:Values: array with list of hour numbers, (0-23)\n-:Required: only for TIME policy\n-:Example:\n+Set the current frequency for the specified core by scaling up/down/min/max:\n \n- .. code-block:: javascript\n+.. code-block:: console\n \n- \"quiet_hours\":[ 2, 3, 4, 5, 6 ]\n+ set_cpu_freq {core_num} up|down|min|max\n \n-:Pair Name: \"avg_packet_thresh\"\n-:Description: Threshold below which the frequency will be set to min for\n- the TRAFFIC policy. If the traffic rate is above this and below max, the\n- frequency will be set to medium.\n-:Type: integer\n-:Values: The number of packets below which the TRAFFIC policy applies the\n- minimum frequency, or medium frequency if between avg and max thresholds.\n-:Required: only for TRAFFIC policy\n-:Example:\n+.. _enabling_out_of_band:\n \n- .. code-block:: javascript\n+Command Line Options for Enabling Out-of-band Branch Ratio Monitoring\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n- \"avg_packet_thresh\": 100000\n+There are a couple of command line parameters for enabling the out-of-band\n+monitoring of branch ratios on cores doing busy polling using PMDs as\n+described in the following table.\n \n-:Pair Name: \"max_packet_thresh\"\n-:Description: Threshold above which the frequency will be set to max for\n- the TRAFFIC policy\n-:Type: integer\n-:Values: The number of packets per interval above which the TRAFFIC policy\n- applies the maximum frequency\n-:Required: only for TRAFFIC policy\n-:Example:\n+Table 1 – Command Line Options for Enabling Out-of-band Monitoring of\n+Branch Ratios\n \n- .. code-block:: javascript\n+=============================== ==============================================\n+**Command Line Option** **Description**\n+=============================== ==============================================\n+``--core-list {list of cores}`` | Specify the list of cores to monitor the ratio of branch misses\n+ | to branch hits. A tightly-polling PMD thread has a very low\n+ | branch ratio, therefore the core frequency scales down to the\n+ | minimum allowed value. On receiving packets, the code path changes,\n+ | causing the branch ratio to increase. When the ratio goes above\n+ | the ratio threshold, the core frequency scales up to the maximum\n+ | allowed value.\n+``--branch-ratio {ratio}`` | Specify a floating-point number that identifies the threshold at which\n+ | to scale up or down for the given workload. The default branch ratio\n+ | is 0.01 and needs adjustment for different workloads.\n+=============================== ==============================================\n \n- \"max_packet_thresh\": 500000\n \n-:Pair Name: \"workload\"\n-:Description: When our policy is of type WORKLOAD, we need to specify how\n- heavy our workload is.\n-:Type: string\n-:Values:\n \n- :HIGH: For cores running workloads that require high frequencies\n- :MEDIUM: For cores running workloads that require medium frequencies\n- :LOW: For cores running workloads that require low frequencies\n-:Required: only for WORKLOAD policy types\n-:Example:\n+Compiling and Running the Guest Applications\n+--------------------------------------------\n \n- .. code-block:: javascript\n+It is possible to use the ``l3fwd-power`` application (for example) with the\n+``vm_power_manager``.\n \n- \"workload\", \"MEDIUM\"\n+The distribution also provides a guest CLI for validating the setup.\n \n-:Pair Name: \"mac_list\"\n-:Description: When our policy is of type TRAFFIC, we need to specify the\n- MAC addresses that the host needs to monitor\n-:Type: string\n-:Values: array with a list of mac address strings.\n-:Required: only for TRAFFIC policy types\n-:Example:\n+For both ``l3fwd-power`` and the guest CLI, the host application must use\n+the ``add_channels`` command to monitor the channels for the VM. To do this,\n+issue the following commands in the host application:\n \n- .. code-block:: javascript\n+.. code-block:: console\n \n- \"mac_list\":[ \"de:ad:be:ef:01:01\", \"de:ad:be:ef:01:02\" ]\n+ vm_power> add_vm vmname\n+ vm_power> add_channels vmname all\n+ vm_power> set_channel_status vmname all enabled\n+ vm_power> show_vm vmname\n \n-:Pair Name: \"unit\"\n-:Description: the type of power operation to apply in the command\n-:Type: string\n-:Values:\n+Compiling the Guest Application\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n- :SCALE_MAX: Scale frequency of this core to maximum\n- :SCALE_MIN: Scale frequency of this core to minimum\n- :SCALE_UP: Scale up frequency of this core\n- :SCALE_DOWN: Scale down frequency of this core\n- :ENABLE_TURBO: Enable Turbo Boost for this core\n- :DISABLE_TURBO: Disable Turbo Boost for this core\n-:Required: only for POWER instruction\n-:Example:\n+For information on compiling DPDK and the sample applications in general,\n+see :doc:`compiling`.\n \n- .. code-block:: javascript\n+For compiling and running the ``l3fwd-power`` sample application, see\n+:doc:`l3_forward_power_man`.\n \n- \"unit\", \"SCALE_MAX\"\n+The application is in the ``guest_cli`` subdirectory under ``vm_power_manager``.\n \n-JSON API Examples\n-~~~~~~~~~~~~~~~~~\n+To build just the ``guest_vm_power_manager`` application using ``make``, issue\n+the following commands:\n \n-Profile create example:\n+.. code-block:: console\n \n- .. code-block:: javascript\n+ export RTE_SDK=/path/to/rte_sdk\n+ export RTE_TARGET=build\n+ cd ${RTE_SDK}/examples/vm_power_manager/guest_cli/\n+ make\n \n- {\"policy\": {\n- \"command\": \"create\",\n- \"policy_type\": \"TIME\",\n- \"busy_hours\":[ 17, 18, 19, 20, 21, 22, 23 ],\n- \"quiet_hours\":[ 2, 3, 4, 5, 6 ]\n- }}\n+The resulting binary is ``${RTE_SDK}/build/examples/guest_cli``.\n \n-Profile destroy example:\n+**Note**: This sample application conditionally links in the Jansson JSON\n+library. Consequently, if you are using a multilib or cross-compile\n+environment, you may need to set the ``PKG_CONFIG_LIBDIR`` environmental\n+variable to point to the relevant ``pkgconfig`` folder so that the correct\n+library is linked in.\n \n- .. code-block:: javascript\n+For example, if you are building for a 32-bit target, you could find the\n+correct directory using the following find command:\n \n- {\"policy\": {\n- \"command\": \"destroy\"\n- }}\n+.. code-block:: console\n \n-Power command example:\n+ # find /usr -type d -name pkgconfig\n+ /usr/lib/i386-linux-gnu/pkgconfig\n+ /usr/lib/x86_64-linux-gnu/pkgconfig\n \n- .. code-block:: javascript\n+Then use:\n \n- {\"instruction\": {\n- \"command\": \"power\",\n- \"unit\": \"SCALE_MAX\"\n- }}\n+.. code-block:: console\n \n-To send a JSON string to the Power Manager application, simply paste the\n-example JSON string into a text file and cat it into the proper fifo:\n+ export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig\n \n- .. code-block:: console\n+You then use the ``make`` command as normal, which should find the 32-bit\n+version of the library, if it installed. If not, the application builds\n+without the JSON interface functionality.\n \n- cat file.json >/tmp/powermonitor/fifo[0..n]\n+To build just the ``vm_power_manager`` application using ``meson``/``ninja``:\n \n-The console of the Power Manager application should indicate the command that\n-was just received via the fifo.\n+.. code-block:: console\n \n-Compiling and Running the Guest Applications\n---------------------------------------------\n+ export RTE_SDK=/path/to/rte_sdk\n+ cd ${RTE_SDK}\n+ meson build\n+ cd build\n+ ninja\n+ meson configure -Dexamples=vm_power_manager/guest_cli\n+ ninja\n \n-l3fwd-power is one sample application that can be used with vm_power_manager.\n+The resulting binary is ``${RTE_SDK}/build/examples/guest_cli``.\n \n-A guest CLI is also provided for validating the setup.\n+Running the Guest Application\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n-For both l3fwd-power and guest CLI, the channels for the VM must be monitored by the\n-host application using the *add_channels* command on the host. This typically uses\n-the following commands in the host application:\n+The standard EAL command line parameters are necessary:\n \n .. code-block:: console\n \n- vm_power> add_vm vmname\n- vm_power> add_channels vmname all\n- vm_power> set_channel_status vmname all enabled\n- vm_power> show_vm vmname\n-\n+ ./build/vm_power_mgr [EAL options] -- [guest options]\n \n-Compiling\n-~~~~~~~~~\n+The guest example uses a channel for each lcore enabled. For example, to\n+run on cores 0, 1, 2 and 3:\n \n-For information on compiling DPDK and the sample applications\n-see :doc:`compiling`.\n+.. code-block:: console\n \n-For compiling and running l3fwd-power, see :doc:`l3_forward_power_man`.\n+ ./build/guest_vm_power_mgr -l 0-3\n \n-The application is located in the ``guest_cli`` sub-directory under ``vm_power_manager``.\n+.. _sending_policy:\n \n-To build just the ``guest_vm_power_manager`` application using ``make``:\n+Command Line Options Available When Sending a Policy to the Host\n+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n \n-.. code-block:: console\n+Optionally, there are several command line options for a user who needs\n+to send a power policy to the host application. The following table\n+describes these options.\n \n- export RTE_SDK=/path/to/rte_sdk\n- export RTE_TARGET=build\n- cd ${RTE_SDK}/examples/vm_power_manager/guest_cli/\n- make\n+Table 1 – Command Line Options Available When Sending a Policy to the Host\n \n-The resulting binary will be ${RTE_SDK}/build/examples/guest_cli\n+======================================= ======================================\n+**Command Line Option** **Description**\n+======================================= ======================================\n+``--vm-name {name of guest vm}`` | Allows the user to change the virtual machine name passed\n+ | down to the host application using the power policy. The\n+ | default is ubuntu2.\n+``--vcpu-list {list vm cores}`` | A comma-separated list of cores in the VM that the user\n+ | wants the host application to monitor. The list of cores\n+ | in any vm starts at zero, and the host application maps\n+ | these to the physical cores once the policy passes down\n+ | to the host. Valid syntax includes individual cores\n+ | 2,3,4, a range of cores 2-4, or a combination of both\n+ | 1,3,5-7.\n+``--busy-hours {list of busy hours}`` | A comma-separated list of hours in which to set the core\n+ | frequency to the maximum. Valid syntax includes\n+ | individual hours 2,3,4, a range of hours 2-4, or a\n+ | combination of both 1,3,5-7. Valid hour values are 0 to 23.\n+``--quiet-hours {list of quiet hours}`` | A comma-separated list of hours in which to set the core\n+ | frequency to minimum. Valid syntax includes individual\n+ | hours 2,3,4, a range of hours 2-4, or a combination of\n+ | both 1,3,5-7. Valid hour values are 0 to 23.\n+``--policy {policy type}`` | The type of policy. This can be one of the following values:\n \n-.. Note::\n- This sample application conditionally links in the Jansson JSON\n- library, so if you are using a multilib or cross compile environment you\n- may need to set the ``PKG_CONFIG_LIBDIR`` environmental variable to point to\n- the relevant pkgconfig folder so that the correct library is linked in.\n+ - | TRAFFIC Based on incoming traffic rates on the NIC.\n \n- For example, if you are building for a 32-bit target, you could find the\n- correct directory using the following ``find`` command:\n+ - | TIME - Uses a busy/quiet hours policy.\n \n- .. code-block:: console\n+ - | BRANCH_RATIO - Uses branch ratio counters to determine\n+ | core busyness.\n \n- # find /usr -type d -name pkgconfig\n- /usr/lib/i386-linux-gnu/pkgconfig\n- /usr/lib/x86_64-linux-gnu/pkgconfig\n+ - | WORKLOAD - Sets the frequency to low, medium or high\n+ | based on the received policy setting.\n \n- Then use:\n+ | **Note**: Not all policy types need all parameters. For\n+ | example, BRANCH_RATIO only needs the vcpu-list\n+ | parameter.\n+======================================= ======================================\n \n- .. code-block:: console\n+After successful initialization, the VM Power Manager Guest CLI prompt\n+appears:\n \n- export PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig\n+.. code-block:: console\n \n- You then use the make command as normal, which should find the 32-bit\n- version of the library, if it installed. If not, the application will\n- be built without the JSON interface functionality.\n+ vm_power(guest)>\n \n-To build just the ``vm_power_manager`` application using ``meson/ninja``:\n+To change the frequency of an lcore, use a ``set_cpu_freq`` command similar\n+to the following:\n \n .. code-block:: console\n \n- export RTE_SDK=/path/to/rte_sdk\n- cd ${RTE_SDK}\n- meson build\n- cd build\n- ninja\n- meson configure -Dexamples=vm_power_manager/guest_cli\n- ninja\n-\n-The resulting binary will be ${RTE_SDK}/build/examples/guest_cli\n+ set_cpu_freq {core_num} up|down|min|max\n \n-Running\n-~~~~~~~\n+where, ``{core_num}`` is the lcore and channel to change frequency by\n+scaling up/down/min/max.\n \n-The standard *EAL* command line parameters are required:\n+To start an application, configure the power policy, and send it to the\n+host, use a command like the following:\n \n .. code-block:: console\n \n- ./build/guest_vm_power_mgr [EAL options] -- [guest options]\n+ ./build/guest_vm_power_mgr -l 0-3 -n 4 -- --vm-name=ubuntu --policy=BRANCH_RATIO --vcpu-list=2-4\n \n-The guest example uses a channel for each lcore enabled. For example,\n-to run on cores 0,1,2,3:\n+Once the VM Power Manager Guest CLI appears, issuing the 'send_policy now' command\n+will send the policy to the host:\n \n .. code-block:: console\n \n- ./build/guest_vm_power_mgr -l 0-3\n-\n-Optionally, there is a list of command line parameter should the user wish to send a power\n-policy down to the host application. These parameters are as follows:\n+ send_policy now\n \n- .. code-block:: console\n+Once the policy is sent to the host, the host application takes over the power monitoring\n+of the specified cores in the policy.\n \n- --vm-name {name of guest vm}\n+.. _power_man_requests:\n \n- This parameter allows the user to change the Virtual Machine name passed down to the\n- host application via the power policy. The default is \"ubuntu2\"\n+JSON Interface for Power Management Requests and Policies\n+---------------------------------------------------------\n \n- .. code-block:: console\n+In addition to the command line interface for the host command, and a\n+``virtio-serial`` interface for VM power policies, there is also a JSON\n+interface through which power commands and policies can be sent.\n \n- --vcpu-list {list vm cores}\n+**Note**: This functionality adds a dependency on the Jansson library.\n+Install the Jansson development package on the system to avail of the\n+JSON parsing functionality in the app. Issue the ``apt-get install\n+libjansson-dev`` command to install the development package. The command\n+and package name may be different depending on your operating system. It\n+is worth noting that the app builds successfully if this package is not\n+present, but a warning displays during compilation, and the JSON parsing\n+functionality is not present in the app.\n \n- A comma-separated list of cores in the VM that the user wants the host application to\n- monitor. The list of cores in any vm starts at zero, and these are mapped to the\n- physical cores by the host application once the policy is passed down.\n- Valid syntax includes individual cores '2,3,4', or a range of cores '2-4', or a\n- combination of both '1,3,5-7'\n+Send a request or policy to the VM Power Manager by simply opening a\n+fifo file at ``/tmp/powermonitor/fifo``, writing a JSON string to that file,\n+and closing the file.\n \n- .. code-block:: console\n+The JSON string can be a power management request or a policy, and takes\n+the following format:\n \n- --busy-hours {list of busy hours}\n+.. code-block:: javascript\n \n- A comma-separated list of hours within which to set the core frequency to maximum.\n- Valid syntax includes individual hours '2,3,4', or a range of hours '2-4', or a\n- combination of both '1,3,5-7'. Valid hours are 0 to 23.\n+ {\"packet_type\": {\n+ \"pair_1\": value,\n+ \"pair_2\": value\n+ }}\n \n- .. code-block:: console\n+The ``packet_type`` header can contain one of two values, depending on\n+whether a power management request or policy is being sent. The two\n+possible values are ``instruction`` and ``policy`` and the expected name-value\n+pairs are different depending on which type is sent.\n \n- --quiet-hours {list of quiet hours}\n+The pairs are in the format of standard JSON name-value pairs. The value\n+type varies between the different name-value pairs, and may be integers,\n+strings, arrays, and so on. See :ref:`json_interface_ex`\n+for examples of policies and instructions and\n+:ref:`json_name_value_pair` for the supported names and value types.\n \n- A comma-separated list of hours within which to set the core frequency to minimum.\n- Valid syntax includes individual hours '2,3,4', or a range of hours '2-4', or a\n- combination of both '1,3,5-7'. Valid hours are 0 to 23.\n+.. _json_interface_ex:\n \n- .. code-block:: console\n+JSON Interface Examples\n+~~~~~~~~~~~~~~~~~~~~~~~\n \n- --policy {policy type}\n+The following is an example JSON string that creates a time-profile\n+policy.\n \n- The type of policy. This can be one of the following values:\n- TRAFFIC - based on incoming traffic rates on the NIC.\n- TIME - busy/quiet hours policy.\n- BRANCH_RATIO - uses branch ratio counters to determine core busyness.\n- Not all parameters are needed for all policy types. For example, BRANCH_RATIO\n- only needs the vcpu-list parameter, not any of the hours.\n+.. code-block:: JSON\n \n+ {\"policy\": {\n+ \"name\": \"ubuntu\",\n+ \"command\": \"create\",\n+ \"policy_type\": \"TIME\",\n+ \"busy_hours\":[ 17, 18, 19, 20, 21, 22, 23 ],\n+ \"quiet_hours\":[ 2, 3, 4, 5, 6 ],\n+ \"core_list\":[ 11 ]\n+ }}\n \n-After successful initialization the user is presented with VM Power Manager Guest CLI:\n+The following is an example JSON string that removes the named policy.\n \n-.. code-block:: console\n+.. code-block:: JSON\n \n- vm_power(guest)>\n+ {\"policy\": {\n+ \"name\": \"ubuntu\",\n+ \"command\": \"destroy\",\n+ }}\n \n-To change the frequency of a lcore, use the set_cpu_freq command.\n-Where {core_num} is the lcore and channel to change frequency by scaling up/down/min/max.\n+The following is an example JSON string for a power management request.\n \n-.. code-block:: console\n+.. code-block:: JSON\n \n- set_cpu_freq {core_num} up|down|min|max\n+ {\"instruction\": {\n+ \"name\": \"ubuntu\",\n+ \"command\": \"power\",\n+ \"unit\": \"SCALE_MAX\",\n+ \"resource_id\": 10\n+ }}\n \n To query the available frequences of an lcore, use the query_cpu_freq command.\n Where {core_num} is the lcore to query.\n@@ -783,3 +697,215 @@ will send the policy to the host:\n \n Once the policy is sent to the host, the host application takes over the power monitoring\n of the specified cores in the policy.\n+\n+.. _json_name_value_pair:\n+\n+JSON Name-value Pairs\n+~~~~~~~~~~~~~~~~~~~~~\n+\n+The following are the name-value pairs supported by the JSON interface:\n+\n+- `avg_packet_thresh`_\n+- `busy_hours`_\n+- `command`_\n+- `core_list`_\n+- `mac_list`_\n+- `max_packet_thresh`_\n+- `name`_\n+- `policy_type`_\n+- `quiet_hours`_\n+- `resource_id`_\n+- `unit`_\n+- `workload`_\n+\n+avg_packet_thresh\n+^^^^^^^^^^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"avg_packet_thresh\"\n+================== ===========================================================\n+ **Description:** | The threshold below which the frequency is set to the minimum value for the\n+ | TRAFFIC policy. If the traffic rate is above this value and below the\n+ | maximum value, the frequency is set to medium.\n+ **Type:** integer\n+ **Values:** | The number of packets below which the TRAFFIC policy applies the minimum\n+ | frequency, or the medium frequency if between the average and maximum\n+ | thresholds.\n+ **Required:** Yes\n+ **Example:** ``\"avg_packet_thresh\": 100000``\n+================== ===========================================================\n+\n+busy_hours\n+^^^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"busy_hours\"\n+================== ===========================================================\n+ **Description:** The hours of the day in which we scale up the cores for busy times.\n+ **Type:** array of integers\n+ **Values:** An array with a list of hour values (0-23).\n+ **Required:** For the TIME policy only.\n+ **Example:** ``\"busy_hours\":[ 17, 18, 19, 20, 21, 22, 23 ]``\n+================== ===========================================================\n+\n+command\n+^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"command\"\n+================== ===========================================================\n+ **Description:** | The type of packet to send to the VM Power Manager. It is possible to create\n+ | or destroy a policy or send a direct command to adjust the frequency of a core,\n+ | as is possible on the command line interface.\n+ **Type:** | string\n+ **Values:** Possible values are:\n+\n+ - CREATE: Create a new policy.\n+ - DESTROY: Remove an existing policy.\n+ - POWER: Send an immediate command, max, min, and so on.\n+\n+ **Required:** Yes\n+ **Example:** ``\"command\": \"CREATE\"``\n+================== ===========================================================\n+\n+core_list\n+^^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"core_list\"\n+================== ===========================================================\n+ **Description:** The cores to which to apply a policy.\n+ **Type:** array of integers\n+ **Values:** An array with a list of virtual CPUs.\n+ **Required:** For CREATE/DESTROY policy requests only.\n+ **Example:** ``\"core_list\":[ 10, 11 ]``\n+================== ===========================================================\n+\n+mac_list\n+^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"mac_list\"\n+================== ===========================================================\n+ **Description:** | When the policy is of type TRAFFIC, it is necessary to specify the MAC addresses\n+ | that the host must monitor.\n+ **Type:** | array of strings\n+ **Values:** An array with a list of mac address strings.\n+ **Required:** For TRAFFIC policy types only.\n+ **Example:** ``\"mac_list\":[ \"de:ad:be:ef:01:01\",\"de:ad:be:ef:01:02\" ]``\n+================== ===========================================================\n+\n+\n+max_packet_thresh\n+^^^^^^^^^^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"max_packet_thresh\"\n+================== ===========================================================\n+ **Description:** | In a policy of type TRAFFIC, the threshold value above which the frequency is set\n+ | to a maximum.\n+ **Type:** | integer\n+ **Values:** | The number of packets per interval above which the TRAFFIC\n+ | policy applies the maximum frequency.\n+ **Required:** For the TRAFFIC policy only.\n+ **Example:** ``\"max_packet_thresh\": 500000``\n+================== ===========================================================\n+\n+name\n+^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"name\"\n+================== ===========================================================\n+ **Description:** | The name of the VM or host. Allows the parser to associate the policy with the\n+ | relevant VM or host OS.\n+ **Type:** | string\n+ **Values:** Any valid string.\n+ **Required:** Yes\n+ **Example:** ``\"name\": \"ubuntu2\"``\n+================== ===========================================================\n+\n+policy_type\n+^^^^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"policy_type\"\n+================== ===========================================================\n+ **Description:** | The type of policy to apply. See the ``--policy`` option description for more\n+ | information.\n+ **Type:** string\n+ **Values:** Possible values are:\n+\n+ - | TIME: Time-of-day policy. Scale the frequencies of the relevant cores up/down\n+ | depending on busy and quiet hours.\n+ - | TRAFFIC: Use statistics from the NIC and scale up and down accordingly.\n+ - | WORKLOAD: Determine how heavily loaded the cores are and scale up and down\n+ | accordingly.\n+ - | BRANCH_RATIO: An out-of-band policy that looks at the ratio between branch\n+ | hits and misses on a core and uses that information to determine how much\n+ | packet processing a core is doing.\n+\n+ **Required:** For ``CREATE`` and ``DESTROY`` policy requests only.\n+ **Example:** ``\"policy_type\": \"TIME\"``\n+================== ===========================================================\n+\n+quiet_hours\n+^^^^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"quiet_hours\"\n+================== ===========================================================\n+ **Description:** | The hours of the day to scale down the cores for quiet times.\n+ **Type:** array of integers\n+ **Values:** | An array with a list of hour numbers with values in the range 0 to 23.\n+ **Required:** For the TIME policy only.\n+ **Example:** ``\"quiet_hours\":[ 2, 3, 4, 5, 6 ]``\n+================== ===========================================================\n+\n+resource_id\n+^^^^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"resource_id\"\n+================== ===========================================================\n+ **Description:** The core to which to apply a power command.\n+ **Type:** integer\n+ **Values:** A valid core ID for the VM or host OS.\n+ **Required:** For the ``POWER`` instruction only.\n+ **Example:** ``\"resource_id\": 10``\n+================== ===========================================================\n+\n+unit\n+^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"unit\"\n+================== ===========================================================\n+ **Description:** The type of power operation to apply in the command.\n+ **Type:** string\n+ **Values:** - SCALE_MAX: Scale the frequency of this core to the maximum.\n+ - SCALE_MIN: Scale the frequency of this core to the minimum.\n+ - SCALE_UP: Scale up the frequency of this core.\n+ - SCALE_DOWN: Scale down the frequency of this core.\n+ - ENABLE_TURBO: Enable Intel® Turbo Boost Technology for this core.\n+ - DISABLE_TURBO: Disable Intel® Turbo Boost Technology for this core.\n+ **Required:** For the ``POWER`` instruction only.\n+ **Example:** ``\"unit\": \"SCALE_MAX\"``\n+================== ===========================================================\n+\n+workload\n+^^^^^^^^\n+\n+================== ===========================================================\n+ **Pair Name:** \"workload\"\n+================== ===========================================================\n+ **Description:** In a policy of type WORKLOAD, it is necessary to specify\n+ how heavy the workload is.\n+ **Type:** string\n+ **Values:** - HIGH: Scale the frequency of this core to maximum.\n+ - MEDIUM: Scale the frequency of this core to minimum.\n+ - LOW: Scale up the frequency of this core.\n+ **Required:** For the ``WORKLOAD`` policy only.\n+ **Example:** ``\"workload\": \"MEDIUM\"``\n+================== ===========================================================\n+\n", "prefixes": [ "v1" ] }{ "id": 64262, "url": "