From: Boaz Harrosh <bharrosh@panasas.com>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: linux-kernel@vger.kernel.org, zach.brown@oracle.com, hch@infradead.org
Subject: Re: [PATCH 0/4] Page based O_DIRECT v2
Date: Wed, 19 Aug 2009 15:44:06 +0300 [thread overview]
Message-ID: <4A8BF396.2060607@panasas.com> (raw)
In-Reply-To: <1250584501-31140-1-git-send-email-jens.axboe@oracle.com>
On 08/18/2009 11:34 AM, Jens Axboe wrote:
> Hi,
>
> Updated patchset for page based O_DIRECT. I didn't include the
> loop bits this time, lets focus on getting these core bits into
> shape and then loop is easily patchable on top of this.
>
> Changes since last post:
>
> - Changed do_dio() to generic_file_direct_IO() as per Christophs
> suggestion.
> - Split the first patch into two parts. One simply adds dio_args
> and maintains the current code, the next has the functional change
> but without changing file systems (except NFS).
> - Add ->rw to dio_args (Christoph).
> - A locking fixup. Not really related, but should be fixed up anyways.
>
> There are at least two pending things to work on:
>
> 1) NFS is still broken, I get a crash in freeing some data that
> is not related to the pages. Will debug this.
> 2) As Christoph suggested, we need some way to wait for a dio
> when all segments are submitted. Currently it waits for each
> segment. Not sure how best to solve this issue, will think a
> bit more about this. Basically we need to pass down the wait
> list to the generic_file_direct_IO() and have that do the
> queue kick and wait.
>
Jens hi.
I please have some basic question on the subject?
[1]
So before, the complete iovec from user mode could potentially be
submitted in a single request, depending on the implementor.
With new code, each iovec entry is broken to it's few pages and
is submitted as a separate request. This might not be bad for
block based devices that could see these segments merged back by the
IO elevator. But what about the other implementers that see a
grate performance boost in the current scatter-gather nature of the
iovec API. It's almost as if the application was calling the kernel
for each segment separately.
I wish you would use a more generic page carrier then page-* array.
and submit the complete iovec at once.
We used to use scatter-lists but these are best only used inside DMA
engines and Drivers as they are more then 2 times too big. The ideal for
me is the bio_vec array as used inside a bio. scatter-list has all these
helpers, iterators, and wrappers, which bio_vec do not, so I don't know
what the best choice is.
But your current solution, (from inspection only I have not tested any of
this), might mean a grate performance degradation for some work scenarios.
For example a user-mode app the gathers lots of small memory sources and
hopes to write it as a single very large on-the-wire-NFS-write , might find
itself writing lots of small on-the-wire-NFS-writes.
[2]
Please address linux-fsdevel on these patches. lkml is so crowded and after
all these files do sit in fs/
Thanks
Boaz
next prev parent reply other threads:[~2009-08-19 12:44 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-18 8:34 [PATCH 0/4] Page based O_DIRECT v2 Jens Axboe
2009-08-18 8:34 ` [PATCH 1/4] direct-io: unify argument passing by adding a dio_args structure Jens Axboe
2009-08-18 8:34 ` [PATCH 2/4] direct-io: make O_DIRECT IO path be page based Jens Axboe
2009-08-18 8:35 ` [PATCH 3/4] direct-io: add a "IO for kernel" flag to kiocb Jens Axboe
2009-08-18 8:35 ` [PATCH 4/4] direct-io: get rid of irq flag saving where it isn't needed Jens Axboe
2009-08-19 12:44 ` Boaz Harrosh [this message]
2009-08-19 13:01 ` [PATCH 0/4] Page based O_DIRECT v2 Jens Axboe
2009-08-19 19:05 ` Alan D. Brunelle
2009-08-19 22:06 ` Jens Axboe
2009-08-19 22:23 ` Alan D. Brunelle
2009-08-20 10:40 ` Jens Axboe
2009-08-20 23:12 ` Alan D. Brunelle
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=4A8BF396.2060607@panasas.com \
--to=bharrosh@panasas.com \
--cc=hch@infradead.org \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=zach.brown@oracle.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 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.