Nikunj A. Dadhania wrote: > On Sun, 23 Jan 2011 14:19:44 +0800, Gui Jianfeng <guijianfeng@xxxxxxxxxxxxxx> wrote: >> Implement blkio tunable XML configuration and parsing. >> >> Signed-off-by: Gui Jianfeng <guijianfeng@xxxxxxxxxxxxxx> >> --- >> src/conf/domain_conf.c | 17 ++++++++++++++++- >> src/conf/domain_conf.h | 4 ++++ >> src/qemu/qemu_cgroup.c | 16 +++++++++++++++- >> src/qemu/qemu_conf.c | 3 ++- >> 4 files changed, 37 insertions(+), 3 deletions(-) >> >> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c >> index 645767e..a05ada5 100644 >> --- a/src/conf/domain_conf.c >> +++ b/src/conf/domain_conf.c >> @@ -4810,7 +4810,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, >> { >> xmlNodePtr *nodes = NULL, node = NULL; >> char *tmp = NULL; >> - int i, n; >> + int i, n, w; >> long id = -1; >> virDomainDefPtr def; >> unsigned long count; >> @@ -4887,6 +4887,13 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, >> if (node) >> def->mem.hugepage_backed = 1; >> >> + /* Extract blkio cgroup tunables */ >> + w = virXPathULong("string(./blkiotune/weight)", ctxt, >> + &def->blkio.weight); >> + if (w < 0 || def->blkio.weight > 1000 || def->blkio.weight < 100) >> + virDomainReportError(VIR_ERR_XML_ERROR, "%s", >> + _("I/O weight should fall in [100, 1000]")); >> + > > The weight limit [100, 1000] is cgroup specific and should not come at > this layer as there would be other HVs that will support Block IO > paramters and would not have such limits. So should be better taken care > at the cgroup layer than here. Sure, will change. > >> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h >> index cf7bdc0..b117869 100644 >> --- a/src/conf/domain_conf.h >> +++ b/src/conf/domain_conf.h >> @@ -969,6 +969,10 @@ struct _virDomainDef { >> char *description; >> >> struct { >> + unsigned long weight; >> + } blkio; >> + > > How about the throttle parameters? Will implement later, if needed. > > >> index e5536c0..a3e8e6a 100644 >> --- a/src/qemu/qemu_cgroup.c >> +++ b/src/qemu/qemu_cgroup.c >> @@ -54,7 +54,6 @@ int qemuCgroupControllerActive(struct qemud_driver *driver, >> return 0; >> } >> >> - >> int qemuSetupDiskPathAllow(virDomainDiskDefPtr disk ATTRIBUTE_UNUSED, >> const char *path, >> size_t depth ATTRIBUTE_UNUSED, >> @@ -270,6 +269,21 @@ int qemuSetupCgroup(struct qemud_driver *driver, >> } >> } >> >> + if (qemuCgroupControllerActive(driver, VIR_CGROUP_CONTROLLER_BLKIO)) { >> + if (vm->def->blkio.weight != 0) { >> + rc = virCgroupSetWeight(cgroup, vm->def->blkio.weight); >> + if(rc != 0) { >> + virReportSystemError(-rc, >> + _("Unable to set io weight for domain %s"), >> + vm->def->name); >> + goto cleanup; >> + } >> + } >> + } else { >> + VIR_WARN("Blkio cgroup is disabled in qemu configuration file: %s", >> + vm->def->name); >> + } >> + >> > Similar changes would be needed for LXC as well which uses cgroup apis. Ok. Will post a v2. Thanks, Gui > > > Regards, > Nikunj > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list