diff options
author | Andrew Morton <akpm@osdl.org> | 2006-01-08 04:00:39 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-08 23:12:40 -0500 |
commit | 9d0243bca345d5ce25d3f4b74b7facb3a6df1232 (patch) | |
tree | a3a0a763bf83a483282dc1c3caab587941a98fc2 /mm | |
parent | bec6b0c89b234090681a4516e20ac5debe3e7c59 (diff) |
[PATCH] drop-pagecache
Add /proc/sys/vm/drop_caches. When written to, this will cause the kernel to
discard as much pagecache and/or reclaimable slab objects as it can. THis
operation requires root permissions.
It won't drop dirty data, so the user should run `sync' first.
Caveats:
a) Holds inode_lock for exorbitant amounts of time.
b) Needs to be taught about NUMA nodes: propagate these all the way through
so the discarding can be controlled on a per-node basis.
This is a debugging feature: useful for getting consistent results between
filesystem benchmarks. We could possibly put it under a config option, but
it's less than 300 bytes.
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/truncate.c | 1 | ||||
-rw-r--r-- | mm/vmscan.c | 3 |
2 files changed, 1 insertions, 3 deletions
diff --git a/mm/truncate.c b/mm/truncate.c index 7dee32745901..b1a463d0fe71 100644 --- a/mm/truncate.c +++ b/mm/truncate.c | |||
@@ -249,7 +249,6 @@ unlock: | |||
249 | break; | 249 | break; |
250 | } | 250 | } |
251 | pagevec_release(&pvec); | 251 | pagevec_release(&pvec); |
252 | cond_resched(); | ||
253 | } | 252 | } |
254 | return ret; | 253 | return ret; |
255 | } | 254 | } |
diff --git a/mm/vmscan.c b/mm/vmscan.c index be8235fb1939..428c5801d4b4 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -180,8 +180,7 @@ EXPORT_SYMBOL(remove_shrinker); | |||
180 | * | 180 | * |
181 | * Returns the number of slab objects which we shrunk. | 181 | * Returns the number of slab objects which we shrunk. |
182 | */ | 182 | */ |
183 | static int shrink_slab(unsigned long scanned, gfp_t gfp_mask, | 183 | int shrink_slab(unsigned long scanned, gfp_t gfp_mask, unsigned long lru_pages) |
184 | unsigned long lru_pages) | ||
185 | { | 184 | { |
186 | struct shrinker *shrinker; | 185 | struct shrinker *shrinker; |
187 | int ret = 0; | 186 | int ret = 0; |