From: Christoph Lameter <clameter@sgi.com>
To: Nick Piggin <npiggin@suse.de>
Cc: David Miller <davem@davemloft.net>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
yanmin_zhang@linux.intel.com, dada1@cosmosbay.com
Subject: Re: [rfc][patch 1/3] slub: fix small HWCACHE_ALIGN alignment
Date: Thu, 6 Mar 2008 18:54:19 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.64.0803061841220.29959@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <20080307023223.GD21185@wotan.suse.de>
> It doesn't say start of cache line. It says align them *on* cachelines.
> 2 32 byte objects on a 64 byte cacheline are aligned on the cacheline.
> 2.67 24 bytes objects on a 64 byte cacheline are not aligned on the
> cacheline.
2 32 byte objects means only one is aligned on a cache line.
Certainly cacheline contention is reduced and performance potentially
increased if there are less objects in a cacheline.
The same argument can be made of aligning 8 byte objects on 32 byte
boundaries. Instead of 8 objects per cacheline you only have two. Why 8?
Isnt all of this a bit arbitrary and contrary to the intend of avoiding
cacheline contention?
The cleanest solution to this is to specify the alignment for each
slabcache if such an alignment is needed. The alignment can be just a
global constant or function like cache_line_size().
I.e. define
int smp_align;
On bootup check the number of running cpus and then pass smp_align as
the align parameter (most slabcaches have no other alignment needs, if
they do then we can combine these using max).
If we want to do more sophisticated things then lets have function that
aligns the object on power of two boundaries like SLAB_HWCACHE_ALIGN does
now:
sub_cacheline_align(size)
Doing so will make it more transparent as to what is going on and which
behavior we want. And we can get rid of SLAB_HWCACHE_ALIGN with the weird
semantics. Specifying smp_align wil truly always align on a cacheline
boundary if we are on an SMP system.
next prev parent reply other threads:[~2008-03-07 2:54 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-03 9:34 Nick Piggin
2008-03-03 9:35 ` [rfc][patch 2/3] slab: introduce SMP alignment Nick Piggin
2008-03-03 19:06 ` Christoph Lameter
2008-03-03 20:03 ` Nick Piggin
2008-03-03 20:09 ` Christoph Lameter
2008-03-03 20:12 ` Nick Piggin
2008-03-03 20:17 ` Christoph Lameter
2008-03-03 20:24 ` Nick Piggin
2008-03-03 20:41 ` Pekka Enberg
2008-03-03 21:23 ` Christoph Lameter
2008-03-03 21:31 ` Christoph Lameter
2008-03-05 0:16 ` Nick Piggin
2008-03-07 4:37 ` Nick Piggin
2008-03-07 5:11 ` Christoph Lameter
2008-03-07 5:19 ` Nick Piggin
2008-03-07 5:26 ` Christoph Lameter
2008-03-07 5:37 ` Nick Piggin
2008-03-11 7:13 ` Nick Piggin
2008-03-12 6:21 ` Christoph Lameter
2008-03-03 9:36 ` [rfc][patch 3/3] use SLAB_ALIGN_SMP Nick Piggin
2008-03-03 9:53 ` Eric Dumazet
2008-03-03 12:41 ` Nick Piggin
2008-03-03 13:00 ` Eric Dumazet
2008-03-03 13:46 ` Nick Piggin
2008-03-03 13:53 ` Pekka Enberg
2008-03-03 14:15 ` Eric Dumazet
2008-03-03 19:10 ` Christoph Lameter
2008-03-03 19:09 ` Christoph Lameter
2008-03-03 20:10 ` Nick Piggin
2008-03-03 20:12 ` Christoph Lameter
2008-03-03 20:18 ` Nick Piggin
2008-03-03 21:14 ` Christoph Lameter
2008-03-03 9:44 ` [rfc][patch 1/3] slub: fix small HWCACHE_ALIGN alignment Pekka Enberg
2008-03-03 12:28 ` Nick Piggin
2008-03-03 19:08 ` Christoph Lameter
2008-03-03 20:06 ` Nick Piggin
2008-03-03 20:10 ` Christoph Lameter
2008-03-03 20:17 ` Nick Piggin
2008-03-03 21:16 ` Christoph Lameter
2008-03-03 21:30 ` Pekka Enberg
2008-03-03 21:32 ` Christoph Lameter
2008-03-03 21:35 ` Pekka Enberg
2008-03-05 0:28 ` Nick Piggin
2008-03-05 20:56 ` Christoph Lameter
2008-03-06 2:49 ` Nick Piggin
2008-03-06 22:53 ` Christoph Lameter
2008-03-07 2:04 ` Nick Piggin
2008-03-07 2:20 ` Christoph Lameter
2008-03-07 2:25 ` Nick Piggin
2008-03-07 2:27 ` Christoph Lameter
2008-03-07 2:33 ` Nick Piggin
2008-03-07 2:33 ` Christoph Lameter
2008-03-07 5:23 ` Nick Piggin
2008-03-05 0:08 ` Nick Piggin
2008-03-05 0:06 ` Nick Piggin
2008-03-05 0:10 ` David Miller
2008-03-05 21:06 ` Christoph Lameter
2008-03-06 2:57 ` Nick Piggin
2008-03-06 22:56 ` Christoph Lameter
2008-03-07 2:23 ` Nick Piggin
2008-03-07 2:26 ` Christoph Lameter
2008-03-07 2:32 ` Nick Piggin
2008-03-07 2:54 ` Christoph Lameter [this message]
2008-03-07 3:10 ` Nick Piggin
2008-03-07 3:18 ` Christoph Lameter
2008-03-07 3:22 ` Nick Piggin
2008-03-07 3:58 ` Christoph Lameter
2008-03-07 4:05 ` Nick Piggin
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=Pine.LNX.4.64.0803061841220.29959@schroedinger.engr.sgi.com \
--to=clameter@sgi.com \
--cc=dada1@cosmosbay.com \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=npiggin@suse.de \
--cc=yanmin_zhang@linux.intel.com \
/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
all inboxes | Powered by JetHome®