[libvirt] [PATCH v1] domain_conf: add the support for disk I/O throttle setting

Zhi Yong Wu wuzhy at linux.vnet.ibm.com
Wed Sep 7 09:00:35 UTC 2011


The first patch is only used to see if it is suitable for exteeding blkiotune to implement disk I/O throttling.

As you have known, when blkiotune is issued without options, it will display current tuning parameters; If we exceed it, without options, what should it display? both info will? or should one new option be added to separately display them?

Signed-off-by: Zhi Yong Wu <wuzhy at linux.vnet.ibm.com>
---
 src/conf/domain_conf.c |   18 ++++++++++++++++++
 src/conf/domain_conf.h |   11 +++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index cce9955..7dd350a 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -9065,6 +9065,24 @@ virDomainDiskDefFormat(virBufferPtr buf,
     virBufferAsprintf(buf, "      <target dev='%s' bus='%s'/>\n",
                       def->dst, bus);
 
+    /*disk I/O throttling*/
+    if (def->blkio.blkiothrottle) {
+        virBufferAsprintf(&buf, "  <blkiothrottle>\n");
+        virBufferAsprintf(&buf, "    <bps>%llu</bps>\n",
+                          def->blkiothrottle.bps);
+        virBufferAsprintf(&buf, "    <bps_rd>%llu</bps_rd>\n",
+                          def->blkiothrottle.bps_rd);
+        virBufferAsprintf(&buf, "    <bps_wr>%llu</bps_wr>\n",
+                          def->blkiothrottle.bps_wr);
+        virBufferAsprintf(&buf, "    <iops>%llu</iops>\n",
+                          def->blkiothrottle.iops);
+        virBufferAsprintf(&buf, "    <iops_rd>%llu</iops_rd>\n",
+                          def->blkiothrottle.iops_rd);
+        virBufferAsprintf(&buf, "    <iops_wr>%llu</iops_wr>\n",
+                          def->blkiothrottle.iops_wr);
+        virBufferAsprintf(&buf, "  </blkiothrottle>\n");
+    }
+
     if (def->bootIndex)
         virBufferAsprintf(buf, "      <boot order='%d'/>\n", def->bootIndex);
     if (def->readonly)
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index e218a30..5902377 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -258,6 +258,17 @@ struct _virDomainDiskDef {
     virDomainDiskHostDefPtr hosts;
     char *driverName;
     char *driverType;
+
+    /*disk I/O throttling*/
+    struct {
+        unsigned long long bps;
+        unsigned long long bps_rd;
+        unsigned long long bps_wr;
+        unsigned long long iops;
+        unsigned long long iops_rd;
+        unsigned long long iops_wr;
+    } blkiothrottle;
+
     char *serial;
     int cachemode;
     int error_policy;
-- 
1.7.6




More information about the libvir-list mailing list