All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shaohua Li <shaohua.li@intel.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Tejun Heo <tj@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"cl@linux.com" <cl@linux.com>,
	"npiggin@kernel.dk" <npiggin@kernel.dk>
Subject: Re: [patch V3] percpu_counter: scalability works
Date: Tue, 17 May 2011 13:22:48 +0800	[thread overview]
Message-ID: <1305609768.2375.84.camel@sli10-conroe> (raw)
In-Reply-To: <1305608212.9466.45.camel@edumazet-laptop>

On Tue, 2011-05-17 at 12:56 +0800, Eric Dumazet wrote:
> Le mardi 17 mai 2011 à 08:55 +0800, Shaohua Li a écrit :
> 
> > I'm still interesting in improving percpu_counter itself. If we can
> > improve it, why we don't? My patch doesn't slow down anything for all
> > tests. Why didn't you ever look at it?
> > 
> 
> I did and said there were obvious problems in it.
> 
> 1) 4096 cpus : size of one percpu_counter is 16Kbytes.
> 
> After your last patch -> 20 kbytes for no good reason.
I don't know why you said there is no good reason. I posted a lot of
data which shows improvement, while you just ignore.

The size issue is completely pointless. If you have 4096 CPUs, how could
you worry about 16k bytes memory. Especially the extra memory makes the
API much faster.

> 2) Two separate alloc_percpu() -> two separate cache lines instead of
> one.
Might be in one cache line actually, but can be easily fixed if not
anyway. On the other hand, even touch two cache lines, it's still faster
than the original spinlock implementation, which I already posted data.

> But then, if one alloc_percpu() -> 32 kbytes per object.
the size issue is completely pointless

> 3) Focus on percpu_counter() implementation instead of making an
> analysis of callers.
> 
> I did a lot of rwlocks removal in network stack because they are not the
> right synchronization primitive in many cases. I did not optimize
> rwlocks. If rwlocks were even slower, I suspect other people would have
> help me to convert things faster.
My original issue is mmap, but I already declaimed several times we can
make percpu_counter better, why won't we?

> 4) There is a possible way to solve your deviation case : add at _add()
> beginning a short cut for crazy 'amount' values. Its a bit expensive on
> 32bit arches, so might be added in a new helper to let _add() be fast
> for normal and gentle users.

+		if (unlikely(cmpxchg(ptr, old, 0) != old))
> +			goto retry;
this doesn't change anything, you still have the deviation issue here

> +		atomic64_add(count, &fbc->count);

> if (unlikely(amount >= batch || amount <= -batch)) {
> 	atomic64(amount, &fbc->count);
> 	return;
> }
why we just handle this special case, my patch can make the whole part
faster without deviation

so you didn't point out any obvious problem with my patch actually. This
is good.

Thanks,
Shaohua


  reply	other threads:[~2011-05-17  5:22 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-11  8:10 [patch v2 0/5] percpu_counter: bug fix and enhancement Shaohua Li
2011-05-11  8:10 ` [patch v2 1/5] percpu_counter: fix code for 32bit systems for UP Shaohua Li
2011-05-11  8:10 ` [patch v2 2/5] lglock: convert it to work with dynamically allocated structure Shaohua Li
2011-05-11  8:10 ` [patch v2 3/5] percpu_counter: use lglock to protect percpu data Shaohua Li
2011-05-11  8:10 ` [patch v2 4/5] percpu_counter: use atomic64 for counter in SMP Shaohua Li
2011-05-11  9:34   ` Andrew Morton
2011-05-12  2:40     ` Shaohua Li
2011-05-11  8:10 ` [patch v2 5/5] percpu_counter: preemptless __per_cpu_counter_add Shaohua Li
2011-05-11  9:28 ` [patch v2 0/5] percpu_counter: bug fix and enhancement Tejun Heo
2011-05-12  2:48   ` Shaohua Li
2011-05-12  8:21     ` Tejun Heo
2011-05-12  8:55       ` Shaohua Li
2011-05-12  8:59         ` Tejun Heo
2011-05-12  9:02           ` Eric Dumazet
2011-05-12  9:03             ` Eric Dumazet
2011-05-12  9:05             ` Tejun Heo
2011-05-13  3:09               ` Shaohua Li
2011-05-13  4:37               ` Shaohua Li
2011-05-13  5:20                 ` Eric Dumazet
2011-05-13  5:28                   ` Shaohua Li
2011-05-13  6:34                     ` Eric Dumazet
2011-05-13  7:33                       ` Shaohua Li
2011-05-13 14:51                       ` [patch] percpu_counter: scalability works Eric Dumazet
2011-05-13 15:39                         ` Eric Dumazet
2011-05-13 16:35                           ` [patch V2] " Eric Dumazet
2011-05-13 16:46                             ` Eric Dumazet
2011-05-13 22:03                               ` [patch V3] " Eric Dumazet
2011-05-16  0:58                                 ` Shaohua Li
2011-05-16  6:11                                   ` Eric Dumazet
2011-05-16  6:37                                     ` Shaohua Li
2011-05-16  6:55                                       ` Eric Dumazet
2011-05-16  7:15                                         ` Shaohua Li
2011-05-16  7:44                                           ` Eric Dumazet
2011-05-16  8:34                                             ` Shaohua Li
2011-05-16  9:35                                               ` Eric Dumazet
2011-05-16 14:22                                                 ` Eric Dumazet
2011-05-17  0:55                                                   ` Shaohua Li
2011-05-17  4:56                                                     ` Eric Dumazet
2011-05-17  5:22                                                       ` Shaohua Li [this message]
2011-05-17  9:01                                                         ` Eric Dumazet
2011-05-17  9:11                                                           ` Tejun Heo
2011-05-17  9:45                                                             ` Eric Dumazet
2011-05-17  9:50                                                               ` Tejun Heo
2011-05-17 12:20                                                                 ` Eric Dumazet
2011-05-17 12:45                                                                   ` Tejun Heo
2011-05-17 13:00                                                                     ` Eric Dumazet
2011-05-17 13:04                                                                       ` Tejun Heo
2011-05-17 13:55                                                                         ` Christoph Lameter
2011-05-17 14:02                                                                           ` Tejun Heo
2011-05-17 14:38                                                                             ` Christoph Lameter
2011-05-18  1:00                                                                 ` Shaohua Li
2011-05-12 14:38   ` [patch v2 0/5] percpu_counter: bug fix and enhancement Christoph Lameter

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=1305609768.2375.84.camel@sli10-conroe \
    --to=shaohua.li@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux.com \
    --cc=eric.dumazet@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=npiggin@kernel.dk \
    --cc=tj@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.