On Wed, 2016-09-07 at 14:24 +0100, anshul makkar wrote: > On 05/09/16 15:55, Dario Faggioli wrote: > > On Thu, 2016-09-01 at 11:52 +0100, anshul makkar wrote: > > So, yes, we know already that it's running in a cpu at least from > > its > > hard affinity, what is it exactly that you are not understanding? > If I put it simply ,  can  (X being a vcpu) > x {soft affinity pcpus} Intersect x { hard affinity pcpu} -> be Null > or  > disjoint set ? > and > The user can setup things such that:  soft-affinity{X} intersection hard-affinity{X} = O but this, here inside the scheduler, is considered like X does not have any soft-affinity at all, i.e., only X's hard-affinity is considered, and all the balancing steps and operations and consideration related to soft-affinity are ignored/skipped. That's because it's absolutely pointless to try figure out where to execute X, among the set of the pCPUs it prefers to run on, if it _can't_ actually run on any pCPU from that same set. So the answer to your question is: "it seems to be possible for the intersection to be void, but in practise, it is not." :-) > x{runnable pcpu} intersect (x{hard affinity pcpu} union x{soft > affinity  > pcpu} ) -> be null or disjoint ?? > I still don't get this. In particular, I'm not sure what 'x{runnable pcpu}' is. Also the union of a vcpu's soft and hard affinity is never done (it's, as explained above, the intersection that counts). Regards, Dario -- <> (Raistlin Majere) ----------------------------------------------------------------- Dario Faggioli, Ph.D, http://about.me/dario.faggioli Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)