Re: [PATCH 3/3] qemu: Implement blkio tunable XML configuration and parsing.

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

 



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.

> 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?


> 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.


Regards,
Nikunj

--
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]