[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |