ping? Although perhaps I should have noted in the title that it seems there's a regression as a result of cgroups changes to the virGetSchedulerType() and virDomainGetSchedulerParameters[Flags]() APIs John On 05/30/2013 08:24 AM, John Ferlan wrote: > These patches resolve an issue seen using 'virsh schedinfo <domain>' on a > non running domain that have been present since 1.0.4 as a result of the > cgroup infrastructure changes: > > https://www.redhat.com/archives/libvir-list/2013-April/msg00783.html > > The exact commit id that caused the issue is listed in each of the commit > messages. I used git bisect to determine, although it was tricky because > the TPM changes were made around the same time and required commit '8b934a5c' > to be applied in order to actually see domains on my host. > > Prior to the changes the "CFS Bandwidth" data provided by qemuGetCpuBWStatus() > and lxcGetCpuBWStatus() would be obtained as a result of the driver cgroup > being mounted. Now it relies on the domain cgroup being mounted which only > occurs once the domain is active. > > This issue also affects the libvirt-cim code in how it defines QEMU domains. > Fortunately it only looks for the "cpu_shares" value. > > A "downside" to the end result of these changes is that for a non-running > domain it becomes impossible to obtain the vcpu_period, vcpu_quota, > emulator_period, and emulator_quota values. All that can be obtained is > the 'cpu_shares" value. As an option, I did consider adding the following to > either [qemu|lxc]DomainSchedulerGetType() and DomainSchedulerParameter[Flags]() > or just [qemu|lxc]GetCpuBWStatus() APIs in order to get the "host" values if > they existed (since they are eventually copied into the domain cgroup): > > if (cgroup == NULL) { > rc = virCgroupNewSelf(&hostgrp); > if (rc < 0) { > virReportSystemError(-rc, "%s", > _("Unable to get schedinfo host cgroup")); > goto cleanup; > } > cgroup = hostgrp; > } > > However, I wasn't sure going that route was desired and figured that I'd > use the code review opportunity to get the answer. Furthermore, it wasn't > clear that the vcpu_* and emulator_* values made sense for a non running > domain. Also, the virReportSystemError may need to change to a VIR_INFO > since I believe it would be triggered if cgroups weren't mounted on the system. > > Another option would be to just add the above code to the GetType() APIs and > then ignore the 'cpu_bw_status' for the VIR_DOMAIN_AFFECT_CONFIG path in > the ParametersFlags() APIs thus returning all 5 datapoints set to whatever > the persistentDef had defined. > > Since this has been present since 1.0.4 and no one has complained so far, I > don't think it's critical for 1.0.6. I suspect the change would need to into > the maint trees though. It might be nice to get DanB's opinion on this too. > > John Ferlan (2): > qemu: Resolve issue with virsh schedinfo for non running domain > lxc: Resolve issue with virsh schedinfo for non running domain > > src/lxc/lxc_driver.c | 9 ++++++++- > src/qemu/qemu_driver.c | 11 ++++++++++- > 2 files changed, 18 insertions(+), 2 deletions(-) > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list