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