From 57544e31e5ad966a86f7ff9dbe9299877b2fb9c8 Mon Sep 17 00:00:00 2001 From: KOSAKI Motohiro Date: Fri, 20 Aug 2010 11:08:33 +0900 Subject: [PATCH 1/4] debug print + sysctl Signed-off-by: KOSAKI Motohiro --- kernel/sysctl.c | 20 ++++++++++++++++++++ mm/vmscan.c | 7 +++++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/kernel/sysctl.c b/kernel/sysctl.c index d24f761..e1b22ed 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -961,6 +961,19 @@ static struct ctl_table kern_table[] = { { } }; +static int sysctl_shrink_all_memory; +static int shrink_all_memory_handler(ctl_table *table, int write, + void __user *buffer, size_t *length, + loff_t *ppos) +{ + proc_dointvec_minmax(table, write, buffer, length, ppos); + if (write) { + shrink_all_memory(sysctl_shrink_all_memory); + } + return 0; +} + + static struct ctl_table vm_table[] = { { .procname = "overcommit_memory", @@ -1318,6 +1331,13 @@ static struct ctl_table vm_table[] = { .extra2 = &one, }, #endif + { + .procname = "shrink_all_memory", + .data = &sysctl_shrink_all_memory, + .maxlen = sizeof(sysctl_shrink_all_memory), + .mode = 0644, + .proc_handler = shrink_all_memory_handler, + }, /* * NOTE: do not add new entries to this table unless you have read diff --git a/mm/vmscan.c b/mm/vmscan.c index b94fe1b..1ce6c43 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2410,6 +2410,8 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim) struct task_struct *p = current; unsigned long nr_reclaimed; + printk(KERN_ERR "shrink_all_memory start\n"); + p->flags |= PF_MEMALLOC; lockdep_set_current_reclaim_state(sc.gfp_mask); reclaim_state.reclaimed_slab = 0; @@ -2421,6 +2423,11 @@ unsigned long shrink_all_memory(unsigned long nr_to_reclaim) lockdep_clear_current_reclaim_state(); p->flags &= ~PF_MEMALLOC; + printk(KERN_ERR "shrink_all_memory: req:%ld reclaimed:%ld free:%ld\n", + nr_to_reclaim, + nr_reclaimed, + global_page_state(NR_FREE_PAGES)); + return nr_reclaimed; } #endif /* CONFIG_HIBERNATION */ -- 1.6.5.2