[libvirt] [PATCH v4 5/9] Implement public API for getting/setting specific IOThread pinning

Daniel P. Berrange berrange at redhat.com
Fri Mar 6 11:14:56 UTC 2015


On Fri, Mar 06, 2015 at 06:06:49AM -0500, John Ferlan wrote:
> 
> 
> On 03/06/2015 04:46 AM, Daniel P. Berrange wrote:
> > On Thu, Mar 05, 2015 at 09:03:02PM -0500, John Ferlan wrote:
> >> Add virDomainGetIOThreadPin to fetch the pinned CPU affinity map
> >> for one IOThread.
> >>
> >> Add virDomainPinIOThread to allow setting the CPU affinity for a
> >> specific IOThread.
> >>
> >> Signed-off-by: John Ferlan <jferlan at redhat.com>
> >> ---
> >>  include/libvirt/libvirt-domain.h |  10 +++
> >>  src/driver-hypervisor.h          |  16 +++++
> >>  src/libvirt-domain.c             | 152 +++++++++++++++++++++++++++++++++++++++
> >>  src/libvirt_public.syms          |   2 +
> >>  4 files changed, 180 insertions(+)
> >>
> >> diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
> >> index 9487b80..fc35cd2 100644
> >> --- a/include/libvirt/libvirt-domain.h
> >> +++ b/include/libvirt/libvirt-domain.h
> >> @@ -1609,6 +1609,16 @@ void                 virDomainIOThreadsInfoFree(virDomainIOThreadInfoPtr info);
> >>  int                  virDomainGetIOThreadsInfo(virDomainPtr domain,
> >>                                                 virDomainIOThreadInfoPtr **info,
> >>                                                 unsigned int flags);
> >> +int                  virDomainGetIOThreadPin (virDomainPtr domain,
> >> +                                              unsigned int iothread_id,
> >> +                                              unsigned char *cpumap,
> >> +                                              int maplen,
> >> +                                              unsigned int flags);
> > 
> > Isn't the GetIOThreadsInfo method & struct already reporting the pinning
> > info for all current IO threads ? I'm not sure what the difference is
> > between what  GetIOThreadsInfo and GetIOThreadPin is ?
> > 
> >   +struct _virDomainIOThreadInfo {
> >   +    unsigned int iothread_id;          /* IOThread ID */
> >   +    unsigned char *cpumap;             /* CPU map for thread. A pointer to an */
> >   +                                       /* array of real CPUs (in 8-bit bytes) */
> >   +    int cpumaplen;                     /* cpumap size */
> >   +};
> > 
> > These fields match all the parameters in GetIOThreadPin, so it seems adding a
> > GetIOThreadPin is redundant,
> > 
> > 
> 
> Yes - although based on reviews from yesterday it wasn't totally clear
> if having a GetIOThreadPin in addition to GetIOThreadsInfo was
> requested, so I added it to be "safe", but can remove it.
> 
> There is a GetVcpus and a GetVcpuPinInfo and the IOThreads code mirrors
> that.

Ah that's more of a historical accident :-) We added GetVcpus first to
simply return the number of VCPUs and later added GetVcpuPinInfo to
return pinning info. If we were doing it fresh, we'd only add the
GetVcpuPinInfo since it offers the superset of features.

If you repost without GetIOThreadPin, I'd ack the rest.

BTW, no need to repost the first 3 I already acked.


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