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 /kernel/sysctl.c | |
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 'kernel/sysctl.c')
-rw-r--r-- | kernel/sysctl.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index a85047bb5739..8dcf6fd5b0f9 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -68,6 +68,7 @@ extern int min_free_kbytes; | |||
68 | extern int printk_ratelimit_jiffies; | 68 | extern int printk_ratelimit_jiffies; |
69 | extern int printk_ratelimit_burst; | 69 | extern int printk_ratelimit_burst; |
70 | extern int pid_max_min, pid_max_max; | 70 | extern int pid_max_min, pid_max_max; |
71 | extern int sysctl_drop_caches; | ||
71 | 72 | ||
72 | #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) | 73 | #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) |
73 | int unknown_nmi_panic; | 74 | int unknown_nmi_panic; |
@@ -775,6 +776,15 @@ static ctl_table vm_table[] = { | |||
775 | .strategy = &sysctl_intvec, | 776 | .strategy = &sysctl_intvec, |
776 | }, | 777 | }, |
777 | { | 778 | { |
779 | .ctl_name = VM_DROP_PAGECACHE, | ||
780 | .procname = "drop_caches", | ||
781 | .data = &sysctl_drop_caches, | ||
782 | .maxlen = sizeof(int), | ||
783 | .mode = 0644, | ||
784 | .proc_handler = drop_caches_sysctl_handler, | ||
785 | .strategy = &sysctl_intvec, | ||
786 | }, | ||
787 | { | ||
778 | .ctl_name = VM_MIN_FREE_KBYTES, | 788 | .ctl_name = VM_MIN_FREE_KBYTES, |
779 | .procname = "min_free_kbytes", | 789 | .procname = "min_free_kbytes", |
780 | .data = &min_free_kbytes, | 790 | .data = &min_free_kbytes, |