All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Pratt <slpratt@austin.ibm.com>
To: Oleg Nesterov <oleg@tv-sign.ru>
Cc: linux-kernel@vger.kernel.org, Ram Pai <linuxram@us.ibm.com>,
	Andrew Morton <akpm@osdl.org>
Subject: Re: [PATCH 3/4] cleanup ahead window calculation
Date: Tue, 25 Jan 2005 15:47:27 -0600	[thread overview]
Message-ID: <41F6BE6F.5040405@austin.ibm.com> (raw)
In-Reply-To: <41F63495.7E254A6E@tv-sign.ru>

Not sure how much better this is, but it doesn't hurt anything.

Steve

Oleg Nesterov wrote:

>This patch moves some code into the get_next_ra_size()
>and renames it into 'set_next_ahead_window'.
>
>Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
>
>--- 2.6.11-rc2/mm/readahead.c~	2005-01-25 15:17:13.000000000 +0300
>+++ 2.6.11-rc2/mm/readahead.c	2005-01-25 16:51:50.000000000 +0300
>@@ -85,20 +85,23 @@ static unsigned long get_init_ra_size(un
>  * not for each call to readahead.  If a cache miss occured, reduce next I/O
>  * size, else increase depending on how close to max we are.
>  */
>-static unsigned long get_next_ra_size(unsigned long cur, unsigned long max,
>-				unsigned long min, unsigned long * flags)
>+static void set_next_ahead_window(struct file_ra_state *ra,
>+				unsigned long max, unsigned long min)
> {
> 	unsigned long newsize;
>+	unsigned long cur = ra->size;
> 
>-	if (*flags & RA_FLAG_MISS) {
>+	ra->ahead_start = ra->start + cur;
>+
>+	if (ra->flags & RA_FLAG_MISS) {
>+		ra->flags &= ~RA_FLAG_MISS;
> 		newsize = max((cur - 2), min);
>-		*flags &= ~RA_FLAG_MISS;
>-	} else if (cur < max / 16) {
>+	} else if (cur < max / 16)
> 		newsize = 4 * cur;
>-	} else {
>+	else
> 		newsize = 2 * cur;
>-	}
>-	return min(newsize, max);
>+
>+	ra->ahead_size = min(newsize, max);
> }
> 
> #define list_to_page(head) (list_entry((head)->prev, struct page, lru))
>@@ -457,9 +460,7 @@ page_cache_readahead(struct address_spac
> 		 * immediately.
> 		 */
> 		if (req_size >= max) {
>-			ra->ahead_size = get_next_ra_size(ra->size, max, min,
>-							  &ra->flags);
>-			ra->ahead_start = ra->start + ra->size;
>+			set_next_ahead_window(ra, max, min);
> 			blockable_page_cache_readahead(mapping, filp,
> 				 ra->ahead_start, ra->ahead_size, ra, 1);
> 		}
>@@ -497,9 +498,7 @@ page_cache_readahead(struct address_spac
> 			ra->size = ra->ahead_size;
> 		}
> 
>-		ra->ahead_size = get_next_ra_size(ra->size, max, min,
>-							&ra->flags);
>-		ra->ahead_start = ra->start + ra->size;
>+		set_next_ahead_window(ra, max, min);
> 
> 		block = ((offset + newsize - 1) >= ra->ahead_start);
> 		if (!blockable_page_cache_readahead(mapping, filp,
>  
>


      reply	other threads:[~2005-01-25 22:58 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-01-25 11:59 [PATCH 3/4] cleanup ahead window calculation Oleg Nesterov
2005-01-25 21:47 ` Steven Pratt [this message]

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=41F6BE6F.5040405@austin.ibm.com \
    --to=slpratt@austin.ibm.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxram@us.ibm.com \
    --cc=oleg@tv-sign.ru \
    /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.