From: Fengguang Wu <wfg@mail.ustc.edu.cn>
To: Andrew Morton <akpm@osdl.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH 1/6] compacting file_ra_state
Date: Fri, 20 Jul 2007 18:07:41 +0800 [thread overview]
Message-ID: <384926279.42287@ustc.edu.cn> (raw)
Message-ID: <20070720101123.936159499@mail.ustc.edu.cn> (raw)
In-Reply-To: 20070720100740.106917381@mail.ustc.edu.cn
[-- Attachment #1: short-rasize.patch --]
[-- Type: text/plain, Size: 2487 bytes --]
Use 'unsigned int' instead of 'unsigned long' for the readahead indexes/sizes.
This helps reduce memory consumption on 64bit CPU when
a lot of files are opened.
Note that the (smaller) 32bit index can support up to 16PB file.
Which should be sufficient large at least for now.
Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn>
---
include/linux/fs.h | 10 +++++-----
mm/filemap.c | 2 +-
mm/readahead.c | 5 +++--
3 files changed, 9 insertions(+), 8 deletions(-)
--- linux-2.6.22-rc6-mm1.orig/include/linux/fs.h
+++ linux-2.6.22-rc6-mm1/include/linux/fs.h
@@ -771,16 +771,16 @@ struct fown_struct {
* Track a single file's readahead state
*/
struct file_ra_state {
- pgoff_t start; /* where readahead started */
- unsigned long size; /* # of readahead pages */
- unsigned long async_size; /* do asynchronous readahead when
+ unsigned int start; /* where readahead started */
+ unsigned int size; /* # of readahead pages */
+ unsigned int async_size; /* do asynchronous readahead when
there are only # of pages ahead */
- unsigned long ra_pages; /* Maximum readahead window */
+ unsigned int ra_pages; /* Maximum readahead window */
unsigned long mmap_hit; /* Cache hit stat for mmap accesses */
unsigned long mmap_miss; /* Cache miss stat for mmap accesses */
- unsigned long prev_index; /* Cache last read() position */
unsigned int prev_offset; /* Offset where last read() ended in a page */
+ unsigned int prev_index; /* Cache last read() position */
};
/*
--- linux-2.6.22-rc6-mm1.orig/mm/filemap.c
+++ linux-2.6.22-rc6-mm1/mm/filemap.c
@@ -840,7 +840,7 @@ static void shrink_readahead_size_eio(st
if (count > 5)
return;
count++;
- printk(KERN_WARNING "Reducing readahead size to %luK\n",
+ printk(KERN_WARNING "Reducing readahead size to %dK\n",
ra->ra_pages << (PAGE_CACHE_SHIFT - 10));
}
--- linux-2.6.22-rc6-mm1.orig/mm/readahead.c
+++ linux-2.6.22-rc6-mm1/mm/readahead.c
@@ -342,11 +342,12 @@ ondemand_readahead(struct address_space
bool hit_readahead_marker, pgoff_t offset,
unsigned long req_size)
{
- unsigned long max; /* max readahead pages */
+ int max; /* max readahead pages */
int sequential;
max = ra->ra_pages;
- sequential = (offset - ra->prev_index <= 1UL) || (req_size > max);
+ sequential = ((unsigned int)offset - ra->prev_index <= 1UL) ||
+ (req_size > max);
/*
* It's the expected callback offset, assume sequential access.
--
next prev parent reply other threads:[~2007-07-20 10:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-20 10:07 [PATCH 0/6] readahead cleanups and interleaved readahead Fengguang Wu
2007-07-20 10:07 ` Fengguang Wu
2007-07-20 10:07 ` Fengguang Wu [this message]
2007-07-20 10:07 ` [PATCH 1/6] compacting file_ra_state Fengguang Wu
[not found] ` <p73y7hbux4d.fsf@bingen.suse.de>
2007-07-20 12:11 ` Fengguang Wu
2007-07-20 12:11 ` Fengguang Wu
2007-07-20 16:02 ` Linus Torvalds
[not found] ` <1184927207.20032.168.camel@twins>
2007-07-20 10:48 ` Peter Zijlstra
2007-07-20 11:24 ` Fengguang Wu
2007-07-20 11:24 ` Fengguang Wu
2007-07-20 10:07 ` [PATCH 2/6] mmap read-around simplification Fengguang Wu
2007-07-20 10:07 ` Fengguang Wu
2007-07-20 10:07 ` [PATCH 3/6] remove several readahead macros Fengguang Wu
2007-07-20 10:07 ` Fengguang Wu
2007-07-20 10:07 ` [PATCH 4/6] remove the limit max_sectors_kb imposed on max_readahead_kb Fengguang Wu
2007-07-20 10:07 ` Fengguang Wu
2007-07-20 11:07 ` Jens Axboe
2007-07-20 11:25 ` Fengguang Wu
2007-07-20 11:25 ` Fengguang Wu
2007-07-20 10:07 ` [PATCH 5/6] introduce radix_tree_scan_hole() Fengguang Wu
2007-07-20 10:07 ` Fengguang Wu
2007-07-20 10:07 ` [PATCH 6/6] basic support of interleaved reads Fengguang Wu
2007-07-20 10:07 ` 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=384926279.42287@ustc.edu.cn \
--to=wfg@mail.ustc.edu.cn \
--cc=akpm@osdl.org \
--cc=torvalds@linux-foundation.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 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.