linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Dave Kleikamp <shaggy@austin.ibm.com>
To: linux-mm <linux-mm@kvack.org>
Cc: Dave Kleikamp <shaggy@austin.ibm.com>,
	Dave McCracken <dmccr@us.ibm.com>,
	Badari Pulavarty <pbadari@us.ibm.com>
Subject: [RFC:PATCH 000/008] Tail Packing in the the Page Cache
Date: Mon, 17 Jul 2006 22:08:05 -0600	[thread overview]
Message-ID: <20060718040804.11926.76333.sendpatchset@kleikamp.austin.ibm.com> (raw)

These patches are still a bit rough, but I wanted to post something before
my OLS presentation on Friday.

The goal of these patches is to avoid excessive internal fragmentation in
the page cache when the base page size is large.  The new function is
enabled by the option, CONFIG_FILE_TAILS, which currently depends on
CONFIG_PPC_64K_PAGES, but should eventually be available on any 64-bit
architecture.

Instead of allocating an entire page to hold the data for a smaller file
tail, we allocate a buffer from the slab cache (using malloc) and anchor it
to the address space (inode->mapping->tail).  A dummy page structure is
used to represent the tail in the page cache and lru list.

Any time the size of the file is increased, or the tail of the file is
mmapped, the tail is unpacked into a regular page.

I'm still experiencing an occasional hang with these patches.  I don't
recommend running with them, unless you are really interested in debugging.

Note: I had originally attempted to perform I/O directly on the dummy page,
but I was unable to get it working before the OLS deadline, so I simplified
things a bit and pack the data into the tail after it is initially read into
a normal page.  I expect that I can improve these patches quite a bit before
they are ready for submission.

These patches are based on linux-2.6.17.

The title of my presentation is "Efficient Use of the Page Cache with 64K
Pages" and will be held in conference room B at 11:00 on Friday, July 21st.

-- 
David Kleikamp
IBM Linux Technology Center

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

             reply	other threads:[~2006-07-18  4:08 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-18  4:08 Dave Kleikamp [this message]
2006-07-18  4:08 ` [RFC:PATCH 001/008] Changes to common header files Dave Kleikamp
2006-07-18  4:08 ` [RFC:PATCH 002/008] Base file tail function Dave Kleikamp
2006-07-18  4:08 ` [RFC:PATCH 003/008] Handle tail pages in kmap & kmap_atomic Dave Kleikamp
2006-07-18  4:08 ` [RFC:PATCH 004/008] Wrap i_size_write Dave Kleikamp
2006-07-18  4:08 ` [RFC:PATCH 005/008] unpack tail page to avoid memory mapping Dave Kleikamp
2006-07-18  4:08 ` [RFC:PATCH 006/008] Don't need to zero past end-of-file in file tail Dave Kleikamp
2006-07-18  4:09 ` [RFC:PATCH 007/008] Make sure tail page is freed correctly Dave Kleikamp
2006-07-18  4:09 ` [RFC:PATCH 008/008] Handle file tails in mm/filemap.c Dave Kleikamp

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=20060718040804.11926.76333.sendpatchset@kleikamp.austin.ibm.com \
    --to=shaggy@austin.ibm.com \
    --cc=dmccr@us.ibm.com \
    --cc=linux-mm@kvack.org \
    --cc=pbadari@us.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox