
At 07/21/2011 09:00 PM, Adam Litke Write:
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;
When we set, we use '*quota *= vm->def->vcpus;', so when we read, we should use '*quota /= vm->def->vcpus' Thanks Wen Congyang
?