xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: George Dunlap <george.dunlap@eu.citrix.com>
To: Demon King <kdmxen@gmail.com>
Cc: "xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: what the meaning of the per cpu variable cpu_core_mask and cpu_sibling_mask?
Date: Thu, 21 Mar 2013 14:26:41 +0000	[thread overview]
Message-ID: <514B18A1.7070607@eu.citrix.com> (raw)
In-Reply-To: <CAH+sev=sK5i3m8xq=TGatgJaJGYC3jAq9DfQr8UGd08CXmuesw@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 2755 bytes --]

On 21/03/13 13:49, Demon King wrote:
> Thank you very much !
> Thanks to your tools, I now understand how to trace some variable in 
> the source code.But I still don't know what is HT siblings or HT and 
> core siblings?Could you explain it a little more detail?
> Thanks again!

Please don't top-post.

Hyperthreads (HT) in the same core are siblings, and cores in the same 
socket / numa node are siblings.

  -George

>
>
> On Thu, Mar 21, 2013 at 8:12 PM, George Dunlap 
> <George.Dunlap@eu.citrix.com <mailto:George.Dunlap@eu.citrix.com>> wrote:
>
>     On Thu, Mar 21, 2013 at 9:53 AM, Demon King <kdmxen@gmail.com
>     <mailto:kdmxen@gmail.com>> 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
>
>


[-- Attachment #1.2: Type: text/html, Size: 5636 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

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

  reply	other threads:[~2013-03-21 14:26 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-21  9:53 what the meaning of the per cpu variable cpu_core_mask and cpu_sibling_mask? Demon King
2013-03-21 12:12 ` George Dunlap
2013-03-21 13:49   ` Demon King
2013-03-21 14:26     ` George Dunlap [this message]
2013-03-23  3:17     ` Dario Faggioli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=514B18A1.7070607@eu.citrix.com \
    --to=george.dunlap@eu.citrix.com \
    --cc=kdmxen@gmail.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).