Messages in this thread | | | From | Andrew Lutomirski <> | Date | Thu, 19 May 2011 23:38:06 -0400 | Subject | Re: Kernel falls apart under light memory pressure (i.e. linking vmlinux) |
| |
On Thu, May 19, 2011 at 11:12 PM, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote: >> Right after that happened, I hit ctrl-c to kill test_mempressure.sh. >> The system was OK until I typed sync, and then everything hung. >> >> I'm really confused. shrink_inactive_list in >> RECLAIM_MODE_LUMPYRECLAIM will call one of the isolate_pages functions >> with ISOLATE_BOTH. The resulting list goes into shrink_page_list, >> which does VM_BUG_ON(PageActive(page)). >> >> How is that supposed to work? > > Usually clear_active_flags() clear PG_active before calling > shrink_page_list(). > > shrink_inactive_list() > isolate_pages_global() > update_isolated_counts() > clear_active_flags() > shrink_page_list() > >
That makes sense. And I have CONFIG_COMPACTION=y, so the lumpy mode doesn't get set anyway.
But the pages I'm seeing have flags=100000000008005D. If I'm reading it right, that means locked,referenced,uptodate,dirty,active. How does a page like that end up in shrink_page_list? I don't see how a page that's !PageLRU can get marked Active. Nonetheless, I'm hitting that VM_BUG_ON.
Is there a race somewhere?
--Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |