Re: [PATCH 9/9] conf: Add memory bandwidth allocation capability of host

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 2018年07月27日 05:04, John Ferlan wrote:


On 07/18/2018 03:57 AM, bing.niu@xxxxxxxxx wrote:
From: Bing Niu <bing.niu@xxxxxxxxx>

Add new XML section to report host's memory bandwidth allocation
capability. The format as below example:

  <host>
  .....
    <memory_bandwidth>
      <node id='0' cpus='0-19'>
        <control granularity='10' min ='10' maxAllocs='8'/>
      </node>
    </memory_bandwidth>
</host>

granularity   ---- granularity of memory bandwidth, unit percentage.
min           ---- minimum memory bandwidth allowed, unit percentage.
maxAllocs     ---- maximum memory bandwidth allocation group supported.

Signed-off-by: Bing Niu <bing.niu@xxxxxxxxx>
---
  docs/schemas/capability.rng                        |  33 +++++++
  src/conf/capabilities.c                            | 108 +++++++++++++++++++++
  src/conf/capabilities.h                            |  11 +++
  src/util/virresctrl.c                              |  20 ++++
  src/util/virresctrl.h                              |  15 +++
  .../linux-resctrl/resctrl/info/MB/bandwidth_gran   |   1 +
  .../linux-resctrl/resctrl/info/MB/min_bandwidth    |   1 +
  .../linux-resctrl/resctrl/info/MB/num_closids      |   1 +
  tests/vircaps2xmldata/vircaps-x86_64-resctrl.xml   |   8 ++
  tests/virresctrldata/resctrl.schemata              |   1 +
  10 files changed, 199 insertions(+)
  create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/info/MB/bandwidth_gran
  create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/info/MB/min_bandwidth
  create mode 100644 tests/vircaps2xmldata/linux-resctrl/resctrl/info/MB/num_closids


What about virsh available views?  And similar to the RDT series what
about domstats?  I think you can get some good ideas from the RDT CMT
RFC that's posted.  Not even sure if it's already done internally - but
pointing it out...  It doesn't have to be done as part of the series,
but eventually it may be nice.

Yes. RDT CMT will follow this memory_bandwidth host capability XML. Huaqiang will handle that.

I'll give the following a cursory look as I have other tasks needing
some attention. I'll leave it in the back of my mind that I have to be
more thorough on the next pass once I get here.

diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng
index 52164d5..d61515c 100644
--- a/docs/schemas/capability.rng
+++ b/docs/schemas/capability.rng
@@ -51,6 +51,9 @@
        <optional>
          <ref name='cache'/>
        </optional>
+      <optional>
+        <ref name='memory_bandwidth'/>
+      </optional>
        <zeroOrMore>
          <ref name='secmodel'/>
        </zeroOrMore>
@@ -326,6 +329,36 @@
      </attribute>
    </define>
+ <define name='memory_bandwidth'>
+    <element name='memory_bandwidth'>
+      <oneOrMore>
+        <element name='node'>
+          <attribute name='id'>
+            <ref name='unsignedInt'/>
+          </attribute>
+          <attribute name='cpus'>
+            <ref name='cpuset'/>
+          </attribute>
+          <zeroOrMore>
+            <element name='control'>
+              <attribute name='granularity'>
+                <ref name='unsignedInt'/>
+              </attribute>
+            <optional>
+              <attribute name='min'>
+                <ref name='unsignedInt'/>
+            </attribute>
+            </optional>
+              <attribute name='maxAllocs'>
+                <ref name='unsignedInt'/>
+              </attribute>
+            </element>
+          </zeroOrMore>
+        </element>
+      </oneOrMore>
+    </element>
+  </define>
+
    <define name='guestcaps'>
      <element name='guest'>
        <ref name='ostype'/>
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index 7a810ef..3f52296 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -198,6 +198,16 @@ virCapabilitiesFreeNUMAInfo(virCapsPtr caps)
  }
static void
+virCapsHostMemBWNodeFree(virCapsHostMemBWNodePtr ptr)
+{
+    if (!ptr)
+        return;
+
+    virBitmapFree(ptr->cpus);
+    VIR_FREE(ptr);
+}
+
+static void
  virCapabilitiesClearSecModel(virCapsHostSecModelPtr secmodel)
  {
      size_t i;
@@ -239,6 +249,11 @@ virCapsDispose(void *object)
          virCapsHostCacheBankFree(caps->host.caches[i]);
      VIR_FREE(caps->host.caches);
+ for (i = 0; i < caps->host.nnodes; i++)
+        virCapsHostMemBWNodeFree(caps->host.nodes[i]);
+    VIR_FREE(caps->host.nodes);
+
+

Remove one of the blank lines.

OK.

Thanks a lot~

This was the only issue I saw in my quick glance - rest seemed OK.

John

[.....]

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux