Re: [PATCH 1/2] KVM: PPC: Book3S HV: Make use of unused threads when running guests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 28, 2015 at 03:17:19PM +1000, Paul Mackerras wrote:
> When running a virtual core of a guest that is configured with fewer
> threads per core than the physical cores have, the extra physical
> threads are currently unused.  This makes it possible to use them to
> run one or more other virtual cores from the same guest when certain
> conditions are met.  This applies on POWER7, and on POWER8 to guests
> with one thread per virtual core.  (It doesn't apply to POWER8 guests
> with multiple threads per vcore because they require a 1-1 virtual to
> physical thread mapping in order to be able to use msgsndp and the
> TIR.)
> 
> The idea is that we maintain a list of preempted vcores for each
> physical cpu (i.e. each core, since the host runs single-threaded).
> Then, when a vcore is about to run, it checks to see if there are
> any vcores on the list for its physical cpu that could be
> piggybacked onto this vcore's execution.  If so, those additional
> vcores are put into state VCORE_PIGGYBACK and their runnable VCPU
> threads are started as well as the original vcore, which is called
> the master vcore.
> 
> After the vcores have exited the guest, the extra ones are put back
> onto the preempted list if any of their VCPUs are still runnable and
> not idle.
> 
> This means that vcpu->arch.ptid is no longer necessarily the same as
> the physical thread that the vcpu runs on.  In order to make it easier
> for code that wants to send an IPI to know which CPU to target, we
> now store that in a new field in struct vcpu_arch, called thread_cpu.
> 
> Signed-off-by: Paul Mackerras <paulus@xxxxxxxxx>

Reviewed-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx>

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: pgpaUXvQNEDEe.pgp
Description: PGP signature


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux