aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2006-01-08 04:00:39 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-08 23:12:40 -0500
commit9d0243bca345d5ce25d3f4b74b7facb3a6df1232 (patch)
treea3a0a763bf83a483282dc1c3caab587941a98fc2 /kernel
parentbec6b0c89b234090681a4516e20ac5debe3e7c59 (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')
-rw-r--r--kernel/sysctl.c10
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;
68extern int printk_ratelimit_jiffies; 68extern int printk_ratelimit_jiffies;
69extern int printk_ratelimit_burst; 69extern int printk_ratelimit_burst;
70extern int pid_max_min, pid_max_max; 70extern int pid_max_min, pid_max_max;
71extern 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)
73int unknown_nmi_panic; 74int 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,