linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Minchan Kim <minchan.kim@gmail.com>
To: Mel Gorman <mel@csn.ul.ie>, David Howells <dhowells@redhat.com>
Cc: Minchan Kim <minchan.kim@gmail.com>,
	Wu Fengguang <fengguang.wu@intel.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Johannes Weiner <hannes@cmpxchg.org>,
	"riel@redhat.com" <riel@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Christoph Lameter <cl@linux-foundation.org>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"tytso@mit.edu" <tytso@mit.edu>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	"elladan@eskimo.com" <elladan@eskimo.com>,
	"npiggin@suse.de" <npiggin@suse.de>,
	"Barnes, Jesse" <jesse.barnes@intel.com>
Subject: Re: Found the commit that causes the OOMs
Date: Tue, 30 Jun 2009 23:00:58 +0900	[thread overview]
Message-ID: <20090630230058.87e530c6.minchan.kim@barrios-desktop> (raw)
In-Reply-To: <20090630092235.GA17561@csn.ul.ie>

Hi, David. 

On Tue, 30 Jun 2009 10:22:36 +0100
Mel Gorman <mel@csn.ul.ie> wrote:

> > > I think this system might be genuinely OOM. It can't reclaim memory and
> > > we are below the minimum watermarks.
> > > 
> > > Is it possible there are pages that are counted as active_anon that in
> > > fact are reclaimable because they are on the wrong LRU list? If that was
> > > the case, the lack of rotation to inactive list would prevent them
> > > getting discovered.
> > 
> > I agree. 
> > One of them is that "[BUGFIX][PATCH] fix lumpy reclaim lru handiling at
> > isolate_lru_pages v2" as Kosaki already said. 
> > 
> > Unfortunately, David said it's not. 
> > But I think your guessing make sense. 
> > 
> > David. Doesn't it happen OOM if you revert my patch, still?
> > 
> 
> In the event the OOM does not happen with the patch reverted, I suggest
> you put together a debugging patch that prints out details of all pages
> on the active_anon LRU list in the event of an OOM. The intention is to
> figure out what pages are on the active_anon list that shouldn't be.

Befor I go to the trip, I made debugging patch in a hurry. 
Mel and I suspect to put the wrong page in lru list.

This patch's goal is that print page's detail on active anon lru when it happen OOM.
Maybe you could expand your log buffer size. 

Could you show me the information with OOM, please ?

---
 include/linux/mm.h |    1 +
 lib/show_mem.c     |    2 +-
 mm/page_alloc.c    |   22 ++++++++++++++++++++++
 mm/vmstat.c        |   14 ++++++++++++++
 4 files changed, 38 insertions(+), 1 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index ba3a7cb..cfd8111 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -713,6 +713,7 @@ extern void pagefault_out_of_memory(void);
 
 #define offset_in_page(p)	((unsigned long)(p) & ~PAGE_MASK)
 
+extern void show_active_anonpages(void);
 extern void show_free_areas(void);
 
 #ifdef CONFIG_SHMEM
diff --git a/lib/show_mem.c b/lib/show_mem.c
index 238e72a..32a3a32 100644
--- a/lib/show_mem.c
+++ b/lib/show_mem.c
@@ -17,7 +17,7 @@ void show_mem(void)
 
 	printk(KERN_INFO "Mem-Info:\n");
 	show_free_areas();
-
+	show_active_anonpages();
 	for_each_online_pgdat(pgdat) {
 		unsigned long i, flags;
 
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 5d714f8..d666f9e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2090,6 +2090,28 @@ void si_meminfo_node(struct sysinfo *val, int nid)
 
 #define K(x) ((x) << (PAGE_SHIFT-10))
 
+void show_active_anonpages(void)
+{
+	struct zone *zone;
+	struct list_head *list;
+	struct page *page;
+
+	for_each_populated_zone(zone) {
+		if (list_empty(&zone->lru[LRU_ACTIVE_ANON].list))
+			continue;
+
+		spin_lock_irq(&zone->lru_lock);
+		list = &zone->lru[LRU_ACTIVE_ANON].list;				
+		printk("==== %s ==== \n", zone->name);
+		list_for_each_entry(page, list, lru) {
+			printk(KERN_INFO "pfn:0x%08lx F:0x%08lx anon:%d C:%d M:%d\n",
+				page_to_pfn(page), page->flags, PageAnon(page), 
+				atomic_read(&page->_count), atomic_read(&page->_mapcount));
+		}
+		spin_unlock_irq(&zone->lru_lock);
+	}
+		
+}
 /*
  * Show free area list (used inside shift_scroll-lock stuff)
  * We also calculate the percentage fragmentation. We do this by counting the
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 138bed5..c23ecaa 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -575,6 +575,12 @@ static int fragmentation_open(struct inode *inode, struct file *file)
 	return seq_open(file, &fragmentation_op);
 }
 
+static int active_anon_open(struct inode *inode, struct file *file)
+{
+	show_active_anonpages();
+	return -ENOENT;
+}
+
 static const struct file_operations fragmentation_file_operations = {
 	.open		= fragmentation_open,
 	.read		= seq_read,
@@ -582,6 +588,13 @@ static const struct file_operations fragmentation_file_operations = {
 	.release	= seq_release,
 };
 
+static const struct file_operations active_anon_file_operations = {
+	.open		= active_anon_open,
+	.read		= seq_read,
+	.llseek		= seq_lseek,
+	.release	= seq_release,
+};
+
 static const struct seq_operations pagetypeinfo_op = {
 	.start	= frag_start,
 	.next	= frag_next,
@@ -938,6 +951,7 @@ static int __init setup_vmstat(void)
 #endif
 #ifdef CONFIG_PROC_FS
 	proc_create("buddyinfo", S_IRUGO, NULL, &fragmentation_file_operations);
+	proc_create("activelruinfo", S_IRUGO, NULL, &active_anon_file_operations);
 	proc_create("pagetypeinfo", S_IRUGO, NULL, &pagetypeinfo_file_ops);
 	proc_create("vmstat", S_IRUGO, NULL, &proc_vmstat_file_operations);
 	proc_create("zoneinfo", S_IRUGO, NULL, &proc_zoneinfo_file_operations);
-- 
1.5.4.3


-- 
Kinds Regards
Minchan Kim

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  parent reply	other threads:[~2009-06-30 14:02 UTC|newest]

Thread overview: 92+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-17  2:23 [PATCH 0/3] make mapped executable pages the first class citizen Wu Fengguang
2009-05-17  2:23 ` [PATCH 1/3] vmscan: report vm_flags in page_referenced() Wu Fengguang
2009-05-17  2:23 ` [PATCH 2/3] vmscan: make mapped executable pages the first class citizen Wu Fengguang
2009-05-19  8:59   ` Wu Fengguang
2009-05-17  2:23 ` [PATCH 3/3] vmscan: merge duplicate code in shrink_active_list() Wu Fengguang
2009-05-18  9:16   ` Wu Fengguang
2009-05-19  2:43     ` Wu Fengguang
2009-05-19 10:18       ` Johannes Weiner
2009-05-19 10:32         ` Wu Fengguang
2009-06-18 14:46 ` [PATCH 0/3] make mapped executable pages the first class citizen David Howells
2009-06-19  5:24   ` Wu Fengguang
2009-06-19  5:58   ` Wu Fengguang
2009-06-19  8:06   ` David Howells
2009-06-18 14:51 ` David Howells
2009-06-18 16:18 ` David Howells
2009-06-18 16:57   ` Andrew Morton
2009-06-20  4:33     ` Wu Fengguang
2009-06-20  8:24     ` David Howells
2009-06-23 14:43     ` David Howells
2009-06-24  1:43       ` KOSAKI Motohiro
2009-06-24  2:32       ` Wu Fengguang
2009-06-24  2:43         ` KOSAKI Motohiro
2009-06-24  2:49           ` Wu Fengguang
2009-06-27 11:53           ` Johannes Weiner
2009-06-27 18:40           ` David Howells
2009-06-24 13:07       ` David Howells
2009-06-27  7:12       ` Found the commit that causes the OOMs David Howells
2009-06-27 12:07         ` Minchan Kim
2009-06-27 12:54         ` Johannes Weiner
2009-06-27 13:50           ` Minchan Kim
2009-06-27 15:36             ` Johannes Weiner
2009-06-28 16:53               ` Minchan Kim
2009-06-27 15:52           ` KOSAKI Motohiro
2009-06-28 11:32           ` Wu Fengguang
2009-06-28 13:30             ` Minchan Kim
2009-06-28 13:36               ` Minchan Kim
2009-06-28 14:22                 ` Wu Fengguang
2009-06-28 15:01                   ` KOSAKI Motohiro
2009-06-28 15:10                     ` Wu Fengguang
2009-06-28 16:50                       ` Minchan Kim
2009-06-29  0:17                       ` Minchan Kim
2009-06-29  7:34                         ` Wu Fengguang
2009-06-29 10:10                         ` David Howells
2009-06-29 12:55                           ` Wu Fengguang
2009-06-29 14:21                           ` David Howells
2009-06-29 15:00                             ` Minchan Kim
2009-06-29 15:14                               ` Wu Fengguang
2009-06-29 15:54                               ` David Howells
2009-06-29 15:56                                 ` David Woodhouse
2009-06-30 14:05                                   ` Wu Fengguang
2009-06-30 15:50                                     ` Minchan Kim
2009-07-01  2:30                                       ` Wu Fengguang
2009-07-01  1:18                                     ` KOSAKI Motohiro
2009-07-01  2:13                                       ` Rik van Riel
2009-07-01  2:16                                       ` Wu Fengguang
2009-07-01  2:26                                         ` Wu Fengguang
2009-07-01  2:51                                           ` KOSAKI Motohiro
2009-07-01  2:57                                             ` Rik van Riel
2009-07-01  4:06                                               ` Wu Fengguang
2009-07-01  4:18                                                 ` KOSAKI Motohiro
2009-07-01  4:25                                                   ` Wu Fengguang
2009-07-01  4:30                                                     ` KOSAKI Motohiro
2009-07-01 11:27                                                       ` Wu Fengguang
2009-07-05  9:55                                               ` Wu Fengguang
2009-07-05 10:38                                                 ` KOSAKI Motohiro
2009-07-05 10:51                                                   ` Wu Fengguang
2009-07-01  3:54                                             ` Wu Fengguang
2009-06-29 16:07                               ` Mel Gorman
2009-06-30  4:07                                 ` Minchan Kim
2009-06-30  9:22                                   ` Mel Gorman
2009-06-30  9:30                                     ` Minchan Kim
2009-06-30 14:00                                     ` Minchan Kim [this message]
2009-06-30 19:57                                 ` David Howells
2009-07-02  7:41                                   ` Minchan Kim
2009-07-02  7:44                                     ` Minchan Kim
2009-07-02 12:43                                     ` Wu Fengguang
2009-07-02 14:08                                       ` Minchan Kim
2009-06-29 15:27                             ` David Howells
2009-06-28 14:49               ` KOSAKI Motohiro
2009-06-28 15:04                 ` Wu Fengguang
2009-06-28 16:47                 ` Minchan Kim
2009-06-29  7:48                   ` KOSAKI Motohiro
2009-06-29  9:32                     ` Minchan Kim
2009-06-29 12:43                   ` David Howells
2009-06-29 12:59                     ` Wu Fengguang
2009-06-29 16:57                     ` Andrew Morton
2009-06-29 18:54                       ` KOSAKI Motohiro
2009-06-29 19:08                         ` KOSAKI Motohiro
2009-06-27 18:35         ` David Howells
2009-06-27 18:58         ` David Howells
2009-06-28  7:55         ` David Howells
2009-06-19  5:27   ` [PATCH 0/3] make mapped executable pages the first class citizen Wu Fengguang

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=20090630230058.87e530c6.minchan.kim@barrios-desktop \
    --to=minchan.kim@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=elladan@eskimo.com \
    --cc=fengguang.wu@intel.com \
    --cc=hannes@cmpxchg.org \
    --cc=jesse.barnes@intel.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=npiggin@suse.de \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=tytso@mit.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox