[libvirt] [PATCH 3/3] qemu: Return true pining info when using numad

John Ferlan jferlan at redhat.com
Fri Aug 7 13:14:29 UTC 2015



On 08/07/2015 06:44 AM, Martin Kletzander wrote:
> On Tue, Aug 04, 2015 at 09:27:13PM -0400, John Ferlan wrote:
>> $SUBJ
>>
>> s/pining/pinning
>>
>> Or perhaps - "qemu: Use numad information when getting pin information""
>>
> 
> OK, I won't mention anything pine-cone-related then ;)
> 
>> On 07/26/2015 12:57 PM, Martin Kletzander wrote:
>>> Pinning information returned for emulatorpin and vcpupin calls is being
>>> returned from our data without querying cgroups for some time.  However,
>>> not all the data were utilized.  When automatic placement is used the
>>> information is not returned for the calls mentioned above.  Since the
>>> numad hint in private data is properly saved/restored, we can safely use
>>> it to return true information.
>>>
>>> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1162947
>>>
>>> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
>>> ---
>>>  src/qemu/qemu_driver.c | 11 +++++++++++
>>>  1 file changed, 11 insertions(+)
>>>
>>
>> Should qemuDomainGetIOThreadsConfig be adjusted as well?  In the for
>> loop that's fetching/filling in the iothreadid there's a filling of the
>> cpumask as well.
>>
> 
> From the name I think that rather qemuDomainGetIOThreadsLive() should
> be adjusted, not Config(), unless I misunderstood what they do.
> 

The Live function takes whatever bitmap was used to set using
GetAffinity. It can be initially set from autoCpuset in hotplug or
qemuProcessStart (return from qemuSetupCgroupForIOThreads).  So I think
Live is fine.  The "Config" though would need adjustment.

For the Emulator/Vcpu code LIVE/CONFIG is a bit different since it
combines live/config...

>> Patches seem reasonable otherwise, although patch2 could have a wee bit
>> more information in the commit log to explain what's being done...
> 
> OK, I'll add some info in there.
> 
>> Beyond that does that value matter if placement_mode !=
>> VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO? or if
>> !virDomainDefNeedsPlacementAdvice (from qemuProcessStart)?  Was checking
>> where it was set and if it's set to something reasonable...
>>
> 
> No it doesn't.  Is there a problem with that?  I haven't found any.
> 

IIRC - when I was looking at how/where autoCpuset was initialized - it
was only done so in qemuProcessStart, but I think my thought was around
whether there was a chance if placement_mode could be AUTO and
autoCpuset not be properly initialized. In hindsight and after more
looking it doesn't seem possible; however, I do note that the
NeedsPlacementAdvice can return true for more than one reason.  So now
I'm wondering - should any of those checks that only check
placement_mode == AUTO - should they change to using
virDomainDefNeedsPlacementAdvice?


John




More information about the libvir-list mailing list