From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Andi Kleen <andi@firstfloor.org>
Cc: Dave Jones <davej@redhat.com>,
x86@kernel.org, Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: Update cacheline size on X86_GENERIC
Date: Sun, 12 Oct 2008 00:48:30 +1100 [thread overview]
Message-ID: <200810120048.31141.nickpiggin@yahoo.com.au> (raw)
In-Reply-To: <20081011131115.GB12131@one.firstfloor.org>
On Sunday 12 October 2008 00:11, Andi Kleen wrote:
> > > > That would be nice. It would be interesting to know what is causing
> > > > the slowdown.
> > >
> > > At least that test is extremly cache footprint sensitive. A lot of the
> > > cache misses are surprisingly in hd_struct, because it runs
> > > with hundred of disks and each needs hd_struct references in the fast
> > > path. The recent introduction of fine grained per partition statistics
> > > caused a large slowdown. But I don't think kernel workloads
> > > are normally that extremly cache sensitive.
> >
> > That's interesting. struct device is pretty big. I wonder if fields
>
> Yes it is (it actually can be easily shrunk -- see willy's recent
> patch to remove the struct completion from knodes), but that won't help
> because it will always
> be larger than a cache line and it's in the middle, so the
> accesses to first part of it and last part of it will be separate.
>
> > couldn't be rearranged to minimise the fastpath cacheline footprint?
> > I guess that's already been looked at?
>
> Yes, but not very intensively. So far I was looking for more
> detailed profiling data to see the exact accesses.
>
> Of course if you have any immediate ideas that could be tried too.
No immediate ideas. Jens probably is a good person to cc. With direct IO
workloads, hd_struct should mostly only be touched in partition remapping
and IO accounting.
start_sect, nr_sects would be read for partition remapping.
*dkstats will be read to do accounting (dkstats for UP is written, but
false sharing doesn't matter on UP), as does partno.
These could all go together at the top of the struct perhaps.
struct device->parent gets read as well. This might go at the top of
struct device, which could come next.
stamp and in_flight are tricky, as they get both read and written often
:(
Still, you might just be able to fit them into the same 64-byte cacheline
as well as all the above fields.
At this point, you would want to cacheline align hd_struct. So if you
want to do that dynamically, you would need to change the disk_part_tbl
scheme (but at least you could test with static annotations first).
The other thing I notice is the block layer has some functions which
have error paths that have BDEVNAME_SIZE size arrays for error cases,
which gcc may not do well at. Probably they should go out to noinline
functions.
next prev parent reply other threads:[~2008-10-11 13:48 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-09 17:14 Dave Jones
2008-10-10 3:28 ` Nick Piggin
2008-10-10 7:46 ` Andi Kleen
2008-10-10 8:45 ` Nick Piggin
2008-10-10 10:22 ` Andi Kleen
2008-10-11 3:59 ` Nick Piggin
2008-10-11 8:08 ` Andi Kleen
2008-10-11 8:29 ` Nick Piggin
2008-10-11 11:22 ` Andi Kleen
2008-10-11 11:27 ` Rafael J. Wysocki
2008-10-11 11:42 ` Nick Piggin
2008-10-11 13:11 ` Andi Kleen
2008-10-11 13:48 ` Nick Piggin [this message]
2008-10-11 14:01 ` Andi Kleen
2008-10-12 5:56 ` Nick Piggin
2008-10-10 18:26 ` H. Peter Anvin
2008-10-11 3:56 ` 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=200810120048.31141.nickpiggin@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=andi@firstfloor.org \
--cc=davej@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@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
all inboxes | Powered by JetHome®