From: Nick Piggin <nickpiggin@yahoo.com.au>
To: Linus Torvalds <torvalds@osdl.org>
Cc: linux-kernel@vger.kernel.org, axboe@suse.de
Subject: Re: [rfc][patch] remove racy sync_page?
Date: Thu, 01 Jun 2006 02:19:56 +1000 [thread overview]
Message-ID: <447DC22C.5070503@yahoo.com.au> (raw)
In-Reply-To: <Pine.LNX.4.64.0605310840000.24646@g5.osdl.org>
Linus Torvalds wrote:
> Tell me WHERE you can unplug in that sequence. I will tell you where you
> can NOT unplug:
...
> - you can NOT just unplug in the path _after_ "readpage()", because the
> IO may have been started by SOMEBODY ELSE that just did read-ahead, and
> didn't unplug (on _purpose_ - the whole point of doing read-ahead is to
> allow concurrent IO execution, so a read-aheader that unplugs is broken
> by definition)
Umm, this happens with the current lock_page() after readpage. And
with per-task plugs, you do not unplug anybody else.
Sure it isn't perfect (you can still concoct a sequence of concurrent
tasks doing funny things that result in a slightly suboptimal request
pattern), but to me it sounds as good or better in some cases than
what we have now.
> So what is your alternative? Put the explicit unplug at every possible
> occurrence of lock_page() (and keep in mind that some of them don't want
> it: we only want it when the lock-page will block, which is not always
> true. Some people lock the page not because it's under IO, and they're
> waiting for it to be unlocked, but because it's dirty and they're going to
> start IO on it - the lock_page() generally won't block on that, and if
> it doesn't, we don't want to kick previous IO).
I keep telling you. Put the unplug after submission of IO. Not before
waiting for IO.
I'll give you one example of how it could be better (feel free to ask
for others too). Your sys_readahead(). Someone asks to readahead 1MB
of data, currently if the queue is empty, that's going to sit around
for 4ms before starting the read. 4ms later, the app comes back hoping
for the request to have finished. Unfortunately it takes another 4ms.
Throughput is halved.
--
SUSE Labs, Novell Inc.
Send instant messages to your online friends http://au.messenger.yahoo.com
next prev parent reply other threads:[~2006-05-31 16:20 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-29 9:34 [rfc][patch] remove racy sync_page? Nick Piggin
2006-05-29 19:15 ` Andrew Morton
2006-05-30 0:08 ` Nick Piggin
2006-05-30 1:32 ` Andrew Morton
2006-05-30 2:54 ` Nick Piggin
2006-05-30 3:14 ` Andrew Morton
2006-05-30 4:13 ` Nick Piggin
2006-05-30 9:05 ` Jens Axboe
2006-05-31 13:43 ` Nick Piggin
2006-05-31 15:09 ` Hugh Dickins
2006-05-31 15:22 ` Nick Piggin
2006-05-31 17:51 ` Jens Axboe
2006-05-31 17:50 ` Jens Axboe
2006-05-30 4:20 ` Linus Torvalds
2006-05-30 5:07 ` Nick Piggin
2006-05-30 5:21 ` Nick Piggin
2006-05-30 6:12 ` Neil Brown
2006-05-30 7:10 ` Nick Piggin
2006-05-31 4:34 ` Neil Brown
2006-05-30 8:24 ` Nikita Danilov
2006-05-30 17:55 ` Linus Torvalds
2006-05-31 0:32 ` Nick Piggin
2006-05-31 0:56 ` Linus Torvalds
2006-05-31 1:33 ` Mark Lord
2006-05-31 6:11 ` Jens Axboe
2006-05-31 12:55 ` Mark Lord
2006-05-31 13:02 ` Jens Axboe
2006-06-01 13:19 ` NCQ performance (was Re: [rfc][patch] remove racy sync_page?) Jens Axboe
2006-06-01 14:56 ` Avi Kivity
2006-06-01 15:03 ` Jens Axboe
2006-06-01 18:04 ` Jens Axboe
2006-06-05 5:30 ` Avi Kivity
2006-06-05 7:59 ` Jens Axboe
2006-05-31 12:31 ` [rfc][patch] remove racy sync_page? Helge Hafting
2006-05-31 12:36 ` Arjan van de Ven
2006-05-31 13:29 ` Nick Piggin
2006-05-31 13:41 ` Jens Axboe
2006-05-31 13:54 ` Nick Piggin
2006-05-31 14:43 ` Linus Torvalds
2006-05-31 14:57 ` Nick Piggin
2006-05-31 15:13 ` Linus Torvalds
2006-05-31 15:33 ` Nick Piggin
2006-05-31 15:57 ` Linus Torvalds
2006-05-31 16:12 ` Linus Torvalds
2006-05-31 16:26 ` Nick Piggin
2006-05-31 16:19 ` Nick Piggin [this message]
2006-05-31 16:22 ` Nick Piggin
2006-05-31 16:41 ` Linus Torvalds
2006-06-02 2:34 ` Nick Piggin
2006-06-02 2:39 ` Nick Piggin
2006-05-31 16:39 ` Linus Torvalds
2006-06-02 2:21 ` Nick Piggin
2006-05-31 23:59 ` Neil Brown
2006-05-31 15:09 ` Linus Torvalds
2006-05-31 18:13 ` Jens Axboe
2006-05-31 18:26 ` Linus Torvalds
2006-05-30 5:36 ` Nick Piggin
2006-05-30 18:31 ` Hugh Dickins
2006-05-31 0:21 ` Nick Piggin
2006-05-31 3:06 ` Hugh Dickins
2006-05-31 14:30 ` Hugh Dickins
2006-05-31 17:56 ` Jens Axboe
2006-05-30 5:51 ` Josef Sipek
2006-05-30 6:44 ` Nick Piggin
2006-05-30 6:50 ` Nick Piggin
2006-05-30 13:12 ` Josef Sipek
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=447DC22C.5070503@yahoo.com.au \
--to=nickpiggin@yahoo.com.au \
--cc=axboe@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.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