[libvirt] [PATCH RESEND RFC v4 5/6] qemu: Implement cfs_period and cfs_quota's modification

Daniel P. Berrange berrange at redhat.com
Thu Jul 21 13:16:21 UTC 2011


On Thu, Jul 21, 2011 at 08:00:21AM -0500, Adam Litke wrote:
> 
> 
> On 07/20/2011 09:11 PM, Wen Congyang wrote:
> > +static int
> > +qemuGetVcpusBWLive(virDomainObjPtr vm, virCgroupPtr cgroup,
> > +                   unsigned long long *period, long long *quota)
> > +{
> > +    virCgroupPtr cgroup_vcpu = NULL;
> > +    qemuDomainObjPrivatePtr priv = NULL;
> > +    int rc;
> > +    int ret = -1;
> > +
> > +    priv = vm->privateData;
> > +    if (priv->nvcpupids == 0 || priv->vcpupids[0] == vm->pid) {
> > +        /* We do not create sub dir for each vcpu */
> > +        rc = qemuGetVcpuBWLive(cgroup, period, quota);
> > +        if (rc < 0)
> > +            goto cleanup;
> > +
> > +        if (*quota > 0)
> > +            *quota /= vm->def->vcpus;
> > +        goto out;
> > +    }
> 
> Are you sure the above is correct?  Based on my earlier suggestion,
> <quota> is always specified as the amount of runtime afforded to a
> single vcpu.  Hence, if you are changing quota to cover for all of a
> vm's vcpus, wouldn't you want to:
> 
>           *quota *= vm->def->vcpus;

This is a good example of why I think the current design is flawed
and needs separate limits explicitly tracked, one for the VM as
a whole, and another for individual VCPUs. The per-VCPU limit
would then simply be unsupported for the case of a QEMU without
vCPU threads, but the per-VM limit could still be used.

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list