From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: perfbook@vger.kernel.org
Subject: Re: Some questions
Date: Thu, 28 Apr 2016 09:28:27 -0700 [thread overview]
Message-ID: <20160428162827.GJ4609@linux.vnet.ibm.com> (raw)
In-Reply-To: <428ce2d3-6d21-a97f-ce60-4b0635a7cbd6@gmail.com>
On Fri, Apr 29, 2016 at 12:39:09AM +0900, Akira Yokosawa wrote:
> On 2016/04/27 16:28:07 -0700, Paul E. McKenney wrote:
> > On Thu, Apr 28, 2016 at 08:01:31AM +0900, Akira Yokosawa wrote:
> >> On 2016/04/27 15:50:22 -0700, Paul E. McKenney wrote:
> >>> On Thu, Apr 28, 2016 at 07:15:05AM +0900, Akira Yokosawa wrote:
> >>>> On 2016/04/27 09:53:57 -0700, Paul E. McKenney wrote:
> [snip.
> >>>>> Please see attached for what it looks like to me.
> >>>>
> >>>> Well, this is identical to the one I built.
> >>>> So, do you intend to explicitly put numbers which show up fairly long time, and
> >>>> leave other cells blank even below changes of values denoted by (n) in italics?
> >>>
> >>> The blank cells represent cache misses. The CPU is waiting for a read
> >>> to complete during that time. A non-blank cell corresponds to a CPU
> >>> actually completing a read.
> >>
> >> Oh, I see. But this should be explained in the text, I think.
> >
> > Good point! I also added several other possibilities, including
> > interrupts and preemption.
> >
>
> So, I have a few questions regarding to the added explanation of blank cells.
>
> According to the text, trace data used to create the table are said to be
> obtained by a program that contains the code fragment shown in Figure 14.4.
> The loop in the code fragment will exit once it sees state.variable != mycpu.
> That means the actual program you used has an outer loop to record the
> changes of state.valuable for each cpu in the system, I suppose.
> Am I guessing right?
IIRC, the program just stuffed timestamps and values into a set of per-CPU
big arrays, then printed them out. A script took these values as input,
and compacted identical state.
> If I am, (n)'s in the table denoting modification of variables must be
> entries in the trace data which were output from the outer loop, I think.
The (n)'s mark changes in value for a given CPU.
> However, in the table, there are a number of cases where (n)'s are followed
> by blanks just below itself. Does this mean fetched state.variables stay in
> the cache very briefly, but are (almost immediately) invalidated by a cache
> coherence mechanism? I can see interrupts and preemption would also cause the
> trace output to be suspended for a while.
It marks places where a given CPU saw a value momentarily. As you say,
this could be due to cache invalidation, interrupts, preemption, etc.
> I'm not sure I have made out what the table means thus far, but am I seeing
> something close enough to what you intend the table to represent?
The main point is that different CPUs can disagree on the value of a given
variable at a given point in time. The following diagram shows that
this disagreement is nevertheless bounded, in that all CPUs must agree
on the ordering of values for that variable.
Thanx, Paul
next prev parent reply other threads:[~2016-04-28 16:27 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-27 15:21 Some questions Akira Yokosawa
[not found] ` <20160427165357.GD4967@linux.vnet.ibm.com>
2016-04-27 22:15 ` Akira Yokosawa
2016-04-27 22:50 ` Paul E. McKenney
2016-04-27 23:01 ` Akira Yokosawa
2016-04-27 23:28 ` Paul E. McKenney
2016-04-28 15:39 ` Akira Yokosawa
2016-04-28 16:28 ` Paul E. McKenney [this message]
2016-04-28 23:05 ` Akira Yokosawa
2016-04-29 16:00 ` Akira Yokosawa
2016-04-29 17:15 ` Paul E. McKenney
2016-04-29 22:06 ` Akira Yokosawa
2016-04-30 1:05 ` Paul E. McKenney
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=20160428162827.GJ4609@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akiyks@gmail.com \
--cc=perfbook@vger.kernel.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