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

Re: [Xen-devel] what the meaning of the per cpu variable cpu_core_mask and cpu_sibling_mask?



On Thu, Mar 21, 2013 at 9:53 AM, Demon King <kdmxen@xxxxxxxxx> wrote:
> I am a new comer of xen-devel. When I read the source code of
> sched_credit.c. I was confused by such codes below:
>
> if ( cpumask_test_cpu(cpu, per_cpu(cpu_core_mask, nxt)) )
>         {
>             /* We're on the same socket, so check the busy-ness of threads.
>              * Migrate if # of idlers is less at all */
>             ASSERT( cpumask_test_cpu(nxt, per_cpu(cpu_core_mask, cpu)) );
>             migrate_factor = 1;
>             cpumask_and(&cpu_idlers, &idlers, per_cpu(cpu_sibling_mask,
> cpu));
>             cpumask_and(&nxt_idlers, &idlers, per_cpu(cpu_sibling_mask,
> nxt));
>         }
>
> I don't know much about xen or linux. So I get confused in the per cpu
> variable: cpu_core_mask and cpu_sibling_mask
> Is anyone willing to tell me? Thank you! And may I ask you where to get
> answers about this kind of question?

A handy tool for looking through the hypervisor source code is as follows:

$ find . -name "*.[cSh]" | xargs grep -H [rexexp]

This will look for [regexp] in every .c, .h, and .S file.

Doing this with "cpu_sibling_mask" turns up a couple of places, one of which is:

xen/arch/x86/smpboot.c

Which has the following comments:

/* representing HT siblings of each logical CPU */
DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_sibling_mask);
/* representing HT and core siblings of each logical CPU */
DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_mask);

So if per_cpu(cpu_core_mask, cpu1) has bit cpu2 set, then cpu2 is a
'core sibling' of cpu1.  Same with cpu_sibling_mask, except then it's
hyperthreads.

To be honest, the code you're looking at now is very complicated and
not very well commented, so it's not surprising you found it difficult
to understand.  I had a plan at some point to update the comments to
make it easier to follow.

 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.