From: Rusty Russell <rusty@rustcorp.com.au>
To: Fengguang Wu <wfg@mail.ustc.edu.cn>
Cc: Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, Andi Kleen <andi@firstfloor.org>,
Jens Axboe <jens.axboe@oracle.com>,
Oleg Nesterov <oleg@tv-sign.ru>,
Steven Pratt <slpratt@austin.ibm.com>,
Ram Pai <linuxram@us.ibm.com>
Subject: Re: [PATCH 4/9] readahead: data structure and routines
Date: Tue, 12 Jun 2007 13:30:50 +1000 [thread overview]
Message-ID: <1181619050.6237.23.camel@localhost.localdomain> (raw)
In-Reply-To: <20070516224818.683288460@mail.ustc.edu.cn>
On Thu, 2007-05-17 at 06:47 +0800, Fengguang Wu wrote:
> /*
> * Track a single file's readahead state
> + *
> + * ================#============|==================#==================|
> + * ^ ^ ^ ^
> + * file_ra_state.la_index .ra_index .lookahead_index .readahead_index
> */
> struct file_ra_state {
> unsigned long start; /* Current window */
> @@ -711,6 +715,12 @@ struct file_ra_state {
> unsigned long prev_index; /* Cache last read() position */
> unsigned long ahead_start; /* Ahead window */
> unsigned long ahead_size;
> +
> + pgoff_t la_index; /* enqueue time */
> + pgoff_t ra_index; /* begin offset */
> + pgoff_t lookahead_index; /* time to do next readahead */
> + pgoff_t readahead_index; /* end offset */
> +
Hi Fengguang,
I found these variables a little confusing. la_index is the last offset
passed to ondemand_readahead, so perhaps "last_request_start" is a
better name? The comment "enqueue time" seems strange, too.
ra_index seems ok, although "readahead_start" might be better. Perhaps
readahead_index should be expressed as readahead_size, which is how it
seems to be used. Perhaps "lookahead_index" is best expressed as a
buffer at the end of the readahead zone (readahead_min?).
ie:
pgoff_t last_request_start; /* start of req which triggered readahead */
pgoff_t readahead_start; /* Where readahead started */
pgoff_t readahead_size; /* PAGE_CACHE_SIZE units of readahead */
pgoff_t readahead_min; /* readahead_size left before we recalc */
This gets rid of many of the accessors, I think, and avoids introducing
a new term to understand (lookahead).
> +/*
> + * Where is the old read-ahead and look-ahead?
> + */
> +static inline void ra_set_index(struct file_ra_state *ra,
> + pgoff_t la_index, pgoff_t ra_index)
> +{
> + ra->la_index = la_index;
> + ra->ra_index = ra_index;
> +}
> +
> +/*
> + * Where is the new read-ahead and look-ahead?
> + */
> +static inline void ra_set_size(struct file_ra_state *ra,
> + unsigned long ra_size, unsigned long la_size)
> +{
> + ra->readahead_index = ra->ra_index + ra_size;
> + ra->lookahead_index = ra->ra_index + ra_size - la_size;
> +}
These are only called in one place, so I think it's clearer to do this
there directly. But I see you exported ra_submit, too, even though it's
only used in the same file. Are there plans for other users?
Thanks,
Rusty.
next prev parent reply other threads:[~2007-06-12 3:31 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-16 22:47 [PATCH 0/9] on-demand readahead Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-05-16 22:47 ` [PATCH 1/9] readahead: introduce PG_readahead Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-05-19 6:28 ` Andrew Morton
2007-05-19 11:35 ` Andi Kleen
2007-05-19 15:19 ` Andrew Morton
2007-05-19 12:30 ` Fengguang Wu
2007-05-19 12:30 ` Fengguang Wu
2007-05-19 15:25 ` Andrew Morton
2007-05-20 3:09 ` Fengguang Wu
2007-05-20 3:09 ` Fengguang Wu
2007-05-20 7:10 ` Christoph Lameter
2007-06-12 1:04 ` Rusty Russell
2007-06-12 2:52 ` Fengguang Wu
2007-06-12 2:52 ` Fengguang Wu
2007-05-16 22:47 ` [PATCH 2/9] readahead: add look-ahead support to __do_page_cache_readahead() Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-05-16 22:47 ` [PATCH 3/9] readahead: MIN_RA_PAGES/MAX_RA_PAGES macros Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-05-16 22:47 ` [PATCH 4/9] readahead: data structure and routines Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-06-12 3:30 ` Rusty Russell [this message]
2007-06-12 12:07 ` Fengguang Wu
2007-06-12 12:07 ` Fengguang Wu
2007-06-13 0:27 ` Rusty Russell
2007-06-13 3:07 ` Fengguang Wu
2007-06-13 3:07 ` Fengguang Wu
2007-05-16 22:47 ` [PATCH 5/9] readahead: on-demand readahead logic Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-05-19 6:23 ` Andrew Morton
2007-05-19 13:02 ` Fengguang Wu
2007-05-19 13:02 ` Fengguang Wu
2007-06-12 4:36 ` Rusty Russell
2007-06-12 10:35 ` Fengguang Wu
2007-06-12 10:35 ` Fengguang Wu
2007-06-13 1:40 ` Rusty Russell
2007-06-13 4:00 ` Fengguang Wu
2007-06-13 4:00 ` Fengguang Wu
2007-06-13 5:51 ` Rusty Russell
2007-06-13 7:07 ` Fengguang Wu
2007-06-13 7:07 ` Fengguang Wu
2007-05-16 22:47 ` [PATCH 6/9] readahead: convert filemap invocations Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-05-16 22:47 ` [PATCH 7/9] readahead: convert splice invocations Fengguang Wu
2007-05-16 22:47 ` Fengguang Wu
2007-05-16 22:48 ` [PATCH 8/9] readahead: convert ext3/ext4 invocations Fengguang Wu
2007-05-16 22:48 ` Fengguang Wu
2007-05-19 12:19 ` Andi Kleen
2007-05-16 22:48 ` [PATCH 9/9] readahead: remove the old algorithm Fengguang Wu
2007-05-16 22:48 ` Fengguang Wu
2007-05-19 12:18 ` Andi Kleen
2007-05-19 13:17 ` Fengguang Wu
2007-05-19 13:17 ` Fengguang Wu
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=1181619050.6237.23.camel@localhost.localdomain \
--to=rusty@rustcorp.com.au \
--cc=akpm@osdl.org \
--cc=andi@firstfloor.org \
--cc=jens.axboe@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxram@us.ibm.com \
--cc=oleg@tv-sign.ru \
--cc=slpratt@austin.ibm.com \
--cc=wfg@mail.ustc.edu.cn \
/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.