From: "Nate Diller" <nate.diller@gmail.com>
To: "Chen, Kenneth W" <kenneth.w.chen@intel.com>
Cc: "Jens Axboe" <jens.axboe@oracle.com>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: [patch] speed up single bio_vec allocation
Date: Thu, 7 Dec 2006 11:22:18 -0800 [thread overview]
Message-ID: <5c49b0ed0612071122v4378f853lc6684ed8a7bbbf7f@mail.gmail.com> (raw)
In-Reply-To: <000001c71963$17d88130$ff0da8c0@amr.corp.intel.com>
On 12/6/06, Chen, Kenneth W <kenneth.w.chen@intel.com> wrote:
> Jens Axboe wrote on Wednesday, December 06, 2006 2:09 AM
> > > > I will try that too. I'm a bit touchy about sharing a cache line for
> > > > different bio. But given that there are 200,000 I/O per second we are
> > > > currently pushing the kernel, the chances of two cpu working on two
> > > > bio that sits in the same cache line are pretty small.
> > >
> > > Yep I really think so. Besides, it's not like we are repeatedly writing
> > > to these objects in the first place.
> >
> > This is what I had in mind, in case it wasn't completely clear. Not
> > tested, other than it compiles. Basically it eliminates the small
> > bio_vec pool, and grows the bio by 16-bytes on 64-bit archs, or by
> > 12-bytes on 32-bit archs instead and uses the room at the end for the
> > bio_vec structure.
>
> Yeah, I had a very similar patch queued internally for the large benchmark
> measurement. I will post the result as soon as I get it.
>
>
> > I still can't help but think we can do better than this, and that this
> > is nothing more than optimizing for a benchmark. For high performance
> > I/O, you will be doing > 1 page bio's anyway and this patch wont help
> > you at all. Perhaps we can just kill bio_vec slabs completely, and
> > create bio slabs instead with differing sizes. So instead of having 1
> > bio slab and 5 bio_vec slabs, change that to 5 bio slabs that leave room
> > for the bio_vec list at the end. That would always eliminate the extra
> > allocation, at the cost of blowing the 256-page case into a order 1 page
> > allocation (256*16 + sizeof(*bio) > PAGE_SIZE) for the 4kb 64-bit archs,
> > which is something I've always tried to avoid.
>
> I took a quick query of biovec-* slab stats on various production machines,
> majority of the allocation is on 1 and 4 segments, usages falls off quickly
> on 16 or more. 256 segment biovec allocation is really rare. I think it
> makes sense to heavily bias towards smaller biovec allocation and have
> separate biovec allocation for really large ones.
what file system? have you tested with more than one? have you
tested with file systems that build their own bio's instead of using
get_block() calls? have you tested with large files or streaming
workloads? how about direct I/O?
i think that a "heavy bias" toward small biovecs is FS and workload
dependent, and that it's irresponsible to make such unjustified
changes just to show improvement on your particular benchmark.
i do however agree with killing SLAB_HWCACHE_ALIGN for biovecs,
pending reasonable regression benchmarks.
NATE
next prev parent reply other threads:[~2006-12-07 19:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-04 19:27 Chen, Kenneth W
2006-12-04 20:06 ` Jens Axboe
2006-12-04 20:36 ` Chen, Kenneth W
2006-12-04 20:43 ` Jens Axboe
2006-12-06 10:08 ` Jens Axboe
2006-12-06 10:56 ` Jens Axboe
2006-12-06 18:19 ` Chen, Kenneth W
2006-12-07 19:22 ` Nate Diller [this message]
2006-12-07 19:36 ` Chen, Kenneth W
2006-12-07 21:46 ` Nate Diller
2006-12-07 21:52 ` Chen, Kenneth W
2006-12-07 22:33 ` Nate Diller
2006-12-08 8:01 ` Jens Axboe
2006-12-08 2:27 ` Andi Kleen
2006-12-08 4:23 ` Chen, Kenneth W
2006-12-08 4:37 ` Andi Kleen
2006-12-08 22:14 Chen, Kenneth W
2006-12-14 20:23 ` Jens Axboe
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=5c49b0ed0612071122v4378f853lc6684ed8a7bbbf7f@mail.gmail.com \
--to=nate.diller@gmail.com \
--cc=jens.axboe@oracle.com \
--cc=kenneth.w.chen@intel.com \
--cc=linux-kernel@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
all inboxes | Powered by JetHome®