From: Zhi Yong Wu <wuzhy(a)linux.vnet.ibm.com>
To: libvir-list(a)redhat.com
Cc: stefanha(a)linux.vnet.ibm.com, agl(a)us.ibm.com, zwu.kernel(a)gmail.com, Zhi
Yong Wu <wuzhy(a)linux.vnet.ibm.com>
Subject: [PATCH v1] domain_conf: add the support for disk I/O throttle
setting
Date: Wed, 7 Sep 2011 17:00:35 +0800
Message-Id: <1315386035-23319-1-git-send-email-wuzhy(a)linux.vnet.ibm.com>
X-Mailer: git-send-email 1.7.6
X-Xagent-From: wuzhy(a)linux.vnet.ibm.com
X-Xagent-To: wuzhy(a)linux.vnet.ibm.com
X-Xagent-Gateway:
vmsdvm4.vnet.ibm.com (XAGENTU3 at VMSDVM4)
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(a)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