[libvirt] PATCH: Support vCPU pinning in QEMU driver

Daniel P. Berrange berrange at redhat.com
Wed May 21 15:30:02 UTC 2008


On Wed, May 21, 2008 at 10:59:28AM -0400, Daniel Veillard wrote:
> On Fri, May 16, 2008 at 10:47:40PM +0100, Daniel P. Berrange wrote:
> > KVM added ability to get the thread ID for vCPUs via the monitor
> > 
> > (qemu) info cpus
> > * CPU #0: pc=0x00000000000ffff0 thread_id=11463
> >   CPU #1: pc=0x00000000fffffff0 thread_id=11464
> >   CPU #2: pc=0x00000000fffffff0 thread_id=11465
> > 
> > With this we have enough information to be able to support vCPU pinning in
> > the QEMU driver for KVM. For QEMU/KQEMU it is trivial, since they have a
> > single thread.
> > 
> > The following patch implements CPU pinning and fetching of CPU affinity
> > information.  In this example I pin one of the 2 cpus in a guest:
> [...]
> > This is implemented using sched_setaffinity/sched_getaffinity which are 
> > Linux specific. There doesn't appear to be a portable process affinity
> > API in POSIX.
> 
>   looks fine to me. I guess the main use will be for KVM which is Linux 
> specific, so that should not be a big deal IMHO (if we could just make sure
> the code doesn't bomb at compile time on say Solaris).

Well I believe the Solaris folks disable QEMU driver entirely, but its
easy enough to add a configure.ac check for sched_setaffinity/sched_getaffinity
and disable them. You can also pin regular QEMU - though its limited to a
single vCPU.

> > If the KVM instance does not support the 'thread_id' data in 'info cpus',
> > we simply print out a suitable error message. We detect the mapping at
> > startup and cache it thereafter.
> 
>   Hum, okay, seems that should work just fine even if one migrates or
> save/restore.
>   Is the error reported each time one starts a new VM ? 

Sorry, was slightly misleading. We detect the mapping at startup and
cache it, but don't print any errors at that point if it is not supported.
Only when someone runs virDomainPinVcpu()/virDomainGetVcpus() will they
get an error message.

Dan.
-- 
|: Red Hat, Engineering, Boston   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list