From: "Paul E. McKenney" <paulmck@linux.ibm.com>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: Junchang Wang <junchangwang@gmail.com>, perfbook@vger.kernel.org
Subject: Re: [PATCH] SMPdesign: fix typos
Date: Fri, 16 Nov 2018 12:13:08 -0800 [thread overview]
Message-ID: <20181116201308.GB4170@linux.ibm.com> (raw)
In-Reply-To: <3cbec794-0a95-2248-adcf-bb35564881ad@gmail.com>
On Sat, Nov 17, 2018 at 12:01:11AM +0900, Akira Yokosawa wrote:
> (Cc: Paul's latest address)
> Hi Junchang,
>
> On 2018/11/16 16:19:57 +0800, Junchang Wang wrote:
> > Signed-off-by: Junchang Wang <junchangwang@gmail.com>
> > ---
> > Hi list,
> >
> > There are a few typos in Section Partitioning. Please take a look.
> >
> > Thanks,
> > --Junchang
> >
> > --
> > SMPdesign/SMPdesign.tex | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/SMPdesign/SMPdesign.tex b/SMPdesign/SMPdesign.tex
> > index 7b4f6eb..562c057 100644
> > --- a/SMPdesign/SMPdesign.tex
> > +++ b/SMPdesign/SMPdesign.tex
> > @@ -936,7 +936,7 @@ We could simply assign each CPU one gigabyte of memory, and allow
> > each CPU to access its own private chunk of memory, without the
> > need for locking and its complexities and overheads.
> > Unfortunately, this simple scheme breaks down if an algorithm happens
> > -to have CPU~0 allocate all of the memory and CPU~1 the free it, as
> > +to have CPU~0 allocate all of the memory and CPU~1 free it, as
>
> I guess Paul's intention was:
>
> +to have CPU~0 allocate all of the memory and CPU~1 then free it, as
>
> ???
You are right, that was my intention, but there significant room for
improvement. Please see below for an updated version of Junchang's
patch. Thoughts?
> > would happen in a simple producer-consumer workload.
> >
> > The other extreme, code locking, suffers from excessive lock contention
> > @@ -1017,7 +1017,7 @@ smaller than the number of non-\co{NULL} pointers.
> > The allocation function \co{memblock_alloc()} may be seen in
> > Listing~\ref{lst:SMPdesign:Allocator-Cache Allocator Function}.
> > Line~\lnref{pick} picks up the current thread's per-thread pool,
> > -and line~8 check to see if it is empty.
> > +and line~\lnref{chk:empty} checks to see if it is empty.
>
> Nice catch!
Indeed, thank you both!!!
> Thanks, Akira
>
> >
> > If so, lines~\lnref{ack}-\lnref{rel} attempt to refill it
> > from the global pool
------------------------------------------------------------------------
commit 81c18b03d1aa2d3edc1dc28867e1f84413eb31e3
Author: Junchang Wang <junchangwang@gmail.com>
Date: Fri Nov 16 16:19:57 2018 +0800
SMPdesign: Fix typos
Signed-off-by: Junchang Wang <junchangwang@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
[ paulmck: Rework to clarify original wording. ]
diff --git a/SMPdesign/SMPdesign.tex b/SMPdesign/SMPdesign.tex
index 7b4f6eb2ba71..fe8f445851e3 100644
--- a/SMPdesign/SMPdesign.tex
+++ b/SMPdesign/SMPdesign.tex
@@ -932,12 +932,11 @@ data ownership to this problem---simply carve up memory so that
each CPU owns its share.
For example, suppose that a system with two CPUs has two gigabytes
of memory (such as the one that I am typing on right now).
-We could simply assign each CPU one gigabyte of memory, and allow
-each CPU to access its own private chunk of memory, without the
-need for locking and its complexities and overheads.
-Unfortunately, this simple scheme breaks down if an algorithm happens
-to have CPU~0 allocate all of the memory and CPU~1 the free it, as
-would happen in a simple producer-consumer workload.
+We could simply assign each CPU one gigabyte of memory, and allow each
+CPU to allocate from its own gigabyte, without the need for locking and
+its complexities and overheads.
+Unfortunately, this scheme fails when CPU~0 only allocates memory and
+CPU~1 only frees it, as happens in simple producer-consumer workloads.
The other extreme, code locking, suffers from excessive lock contention
and overhead~\cite{McKenney93}.
@@ -1017,7 +1016,7 @@ smaller than the number of non-\co{NULL} pointers.
The allocation function \co{memblock_alloc()} may be seen in
Listing~\ref{lst:SMPdesign:Allocator-Cache Allocator Function}.
Line~\lnref{pick} picks up the current thread's per-thread pool,
-and line~8 check to see if it is empty.
+and line~\lnref{chk:empty} checks to see if it is empty.
If so, lines~\lnref{ack}-\lnref{rel} attempt to refill it
from the global pool
next prev parent reply other threads:[~2018-11-17 8:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-16 8:19 [PATCH] SMPdesign: fix typos Junchang Wang
2018-11-16 15:01 ` Akira Yokosawa
2018-11-16 20:13 ` Paul E. McKenney [this message]
2018-11-17 8:26 ` Junchang Wang
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=20181116201308.GB4170@linux.ibm.com \
--to=paulmck@linux.ibm.com \
--cc=akiyks@gmail.com \
--cc=junchangwang@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.