From: Nitin Gupta <nitingupta910@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Pekka Enberg <penberg@cs.helsinki.fi>,
Christoph Lameter <cl@linux-foundation.org>,
Ed Tomlinson <edt@aei.ca>,
linux-mm-cc@laptop.org,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: [PATCH 0/3] compressed in-memory swapping take5
Date: Mon, 30 Mar 2009 20:18:02 +0530 [thread overview]
Message-ID: <49D0DBA2.20101@vflare.org> (raw)
Hi,
Project home: http://compcache.googlecode.com
It allows creating a RAM based block device which acts as swap disk.
Pages swapped to this device are compressed and stored in memory itself.
This is a big win over swapping to slow hard-disk which are typically used
as swap disk. For flash, these suffer from wear-leveling issues when used
as swap disk - so again its helpful. For swapless systems, it allows more
apps to run.
* Changelog: take5 vs take4
xvmalloc changes:
- Use kzalloc() instead of kmalloc() + memset().
- Remove redundant initialization of pool freelists to 0.
* Changelog: take4 vs take3
xvmalloc changes:
- Fixed regression in take3 that caused ramzswap write failures.
This happened due to error in find_block() where we did not do
explicit cast to 'unsigned long' when checking for bits set in
bitmap. Now changed it to use kernel build-in test_bit().
- Fix divide by zero error in proc read function.
ramzswap changes:
- Forward write requests to backing swap device if allocation for
compressed page fails.
- Code cleanups.
* Changelog: take3 vs take2
xvmalloc changes:
- Use kernel defined macros and constants in xvmalloc and remove
equivalent defines for ALIGN, roundup etc.
- Use kernel bitops (set_bit, clear_bit)
- Moved it to drivers/block since its not clear if it has any other
user.
ramzswap changes:
- All instances of compcache renamed to ramzswap.
Also renamed module to ramzswap
- Renamed "backing_dev" parameter to "backing_swap"
- Documentation changes to reflect above changes.
- Remove "table index" from object header (4 bytes). This will be
needed when memory defragmentation is implemented. So, avoid this
(small) overhead for now.
* Changelog: take2 vs initial revision:
xvmalloc changes:
- Use Linux kernel coding style for xvmalloc
- Collapse all individual flag test/set/get to generic {test_set_get}_flag
- Added BLOCK_NEXT() macro to reach next contiguous block
- Other minor cleanups - no functional changes
compcache block device code:
- compcache core changes due to change in xvmalloc interface names
* Testing notes:
- Multiple cycles of 'scan' benchmark available at:
http://linux-mm.org/PageReplacementTesting
It does scans of anonymous mapped memory, both cyclic and use once.
Config:
Arch: x86 and x64
CPUs: 1/2, RAM: 512MB
backing swap: 768MB, ramzswap memlimit: 76MB (15% of RAM).
Continuously run 'scan' till it triggers 200K R/W operations on ramzswap.
Any incompressible pages were correctly forwarded to backing swap device.
cmd: ./scan 450 20 # scan over 450MB, 20 times.
- Links to more performance numbers, use cases can be found at:
http://lkml.org/lkml/2009/3/17/116
Thanks to Ed Tomlinson for reporting bug in 'take3' patches
and to all the reviewers.
Thanks,
Nitin
next reply other threads:[~2009-03-30 14:49 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-30 14:48 Nitin Gupta [this message]
2009-03-30 14:50 ` [PATCH 1/3] xvmalloc memory allocator Nitin Gupta
2009-03-30 14:52 ` [PATCH 2/3] ramzswap virtual block device Nitin Gupta
2009-03-30 14:54 ` [PATCH 3/3] ramzswap documentation Nitin Gupta
2009-04-01 22:57 ` [PATCH 0/3] compressed in-memory swapping take5 Andrew Morton
2009-04-02 0:02 ` Nitin Gupta
2009-04-02 2:09 ` Christoph Lameter
2009-04-02 3:32 ` Nitin Gupta
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=49D0DBA2.20101@vflare.org \
--to=nitingupta910@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux-foundation.org \
--cc=edt@aei.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm-cc@laptop.org \
--cc=ngupta@vflare.org \
--cc=penberg@cs.helsinki.fi \
/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.