diff for duplicates of <20101020090124.GA27531@localhost> diff --git a/a/1.txt b/N1/1.txt index 8e055bf..56e7bf0 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -60,13 +60,13 @@ Fengguang > > > > concurrent direct page reclaim problem > > -> > __GFP_NORETRY page allocations may fail when there are many concurrent page -> > allocating tasks, but not necessary in real short of memory. The root cause -> > is, tasks will first run direct page reclaim to free some pages from the LRU -> > lists and put them to the per-cpu page lists and the buddy system, and then -> > try to get a free page from there. However the free pages reclaimed by this -> > task may be consumed by other tasks when the direct reclaim task is able to -> > get the free page for itself. +> > A __GFP_NORETRY page allocations may fail when there are many concurrent page +> > A allocating tasks, but not necessary in real short of memory. The root cause +> > A is, tasks will first run direct page reclaim to free some pages from the LRU +> > A lists and put them to the per-cpu page lists and the buddy system, and then +> > A try to get a free page from there. A However the free pages reclaimed by this +> > A task may be consumed by other tasks when the direct reclaim task is able to +> > A get the free page for itself. > > I believe the facts disagree with that assumtion. My bad for not > posting this before, but I also used SysRq+M to see whats going on, @@ -158,22 +158,28 @@ Fengguang > [ 437.500032] 1008521 pages non-shared > > -> > Let's retry it a bit harder. +> > A Let's retry it a bit harder. > > -> > --- linux-next.orig/mm/page_alloc.c 2010-10-20 13:44:50.000000000 +0800 -> > +++ linux-next/mm/page_alloc.c 2010-10-20 13:50:54.000000000 +0800 +> > --- linux-next.orig/mm/page_alloc.c A A 2010-10-20 13:44:50.000000000 +0800 +> > +++ linux-next/mm/page_alloc.c A 2010-10-20 13:50:54.000000000 +0800 > > @@ -1700,7 +1700,7 @@ should_alloc_retry(gfp_t gfp_mask, unsig -> > unsigned long pages_reclaimed) -> > { -> > /* Do not loop if specifically requested */ -> > - if (gfp_mask & __GFP_NORETRY) -> > + if (gfp_mask & __GFP_NORETRY && pages_reclaimed > (1 << (order + 12))) -> > return 0; +> > A A A A A A A A A A A A A A A A unsigned long pages_reclaimed) +> > A { +> > A A A A /* Do not loop if specifically requested */ +> > - A A A if (gfp_mask & __GFP_NORETRY) +> > + A A A if (gfp_mask & __GFP_NORETRY && pages_reclaimed > (1 << (order + 12))) +> > A A A A A A A A return 0; > > -> > /* +> > A A A A /* > > -- > > 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/ +> > More majordomo info at A http://vger.kernel.org/majordomo-info.html +> > Please read the FAQ at A http://www.tux.org/lkml/ > > + +-- +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> diff --git a/a/content_digest b/N1/content_digest index 0ca48c3..1ca9370 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -85,13 +85,13 @@ "> >\n" "> > concurrent direct page reclaim problem\n" "> >\n" - "> > \302\240__GFP_NORETRY page allocations may fail when there are many concurrent page\n" - "> > \302\240allocating tasks, but not necessary in real short of memory. The root cause\n" - "> > \302\240is, tasks will first run direct page reclaim to free some pages from the LRU\n" - "> > \302\240lists and put them to the per-cpu page lists and the buddy system, and then\n" - "> > \302\240try to get a free page from there. \302\240However the free pages reclaimed by this\n" - "> > \302\240task may be consumed by other tasks when the direct reclaim task is able to\n" - "> > \302\240get the free page for itself.\n" + "> > A __GFP_NORETRY page allocations may fail when there are many concurrent page\n" + "> > A allocating tasks, but not necessary in real short of memory. The root cause\n" + "> > A is, tasks will first run direct page reclaim to free some pages from the LRU\n" + "> > A lists and put them to the per-cpu page lists and the buddy system, and then\n" + "> > A try to get a free page from there. A However the free pages reclaimed by this\n" + "> > A task may be consumed by other tasks when the direct reclaim task is able to\n" + "> > A get the free page for itself.\n" "> \n" "> I believe the facts disagree with that assumtion. My bad for not\n" "> posting this before, but I also used SysRq+M to see whats going on,\n" @@ -183,24 +183,30 @@ "> [ 437.500032] 1008521 pages non-shared\n" "> \n" "> \n" - "> > \302\240Let's retry it a bit harder.\n" + "> > A Let's retry it a bit harder.\n" "> >\n" - "> > --- linux-next.orig/mm/page_alloc.c \302\240 \302\240 2010-10-20 13:44:50.000000000 +0800\n" - "> > +++ linux-next/mm/page_alloc.c \302\2402010-10-20 13:50:54.000000000 +0800\n" + "> > --- linux-next.orig/mm/page_alloc.c A A 2010-10-20 13:44:50.000000000 +0800\n" + "> > +++ linux-next/mm/page_alloc.c A 2010-10-20 13:50:54.000000000 +0800\n" "> > @@ -1700,7 +1700,7 @@ should_alloc_retry(gfp_t gfp_mask, unsig\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240unsigned long pages_reclaimed)\n" - "> > \302\240{\n" - "> > \302\240 \302\240 \302\240 \302\240/* Do not loop if specifically requested */\n" - "> > - \302\240 \302\240 \302\240 if (gfp_mask & __GFP_NORETRY)\n" - "> > + \302\240 \302\240 \302\240 if (gfp_mask & __GFP_NORETRY && pages_reclaimed > (1 << (order + 12)))\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240return 0;\n" + "> > A A A A A A A A A A A A A A A A unsigned long pages_reclaimed)\n" + "> > A {\n" + "> > A A A A /* Do not loop if specifically requested */\n" + "> > - A A A if (gfp_mask & __GFP_NORETRY)\n" + "> > + A A A if (gfp_mask & __GFP_NORETRY && pages_reclaimed > (1 << (order + 12)))\n" + "> > A A A A A A A A return 0;\n" "> >\n" - "> > \302\240 \302\240 \302\240 \302\240/*\n" + "> > A A A A /*\n" "> > --\n" "> > To unsubscribe from this list: send the line \"unsubscribe linux-kernel\" in\n" "> > the body of a message to majordomo@vger.kernel.org\n" - "> > More majordomo info at \302\240http://vger.kernel.org/majordomo-info.html\n" - "> > Please read the FAQ at \302\240http://www.tux.org/lkml/\n" - > > + "> > More majordomo info at A http://vger.kernel.org/majordomo-info.html\n" + "> > Please read the FAQ at A http://www.tux.org/lkml/\n" + "> >\n" + "\n" + "--\n" + "To unsubscribe, send a message with 'unsubscribe linux-mm' in\n" + "the body to majordomo@kvack.org. For more info on Linux MM,\n" + "see: http://www.linux-mm.org/ .\n" + "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -a7479168c3d1fcda9efd0422e2ee1ecc9ed2750a192c4a4ee7fdcd6c34ab17fc +becd2030d37972cb38d9f769b4fb7f9584660c857f4ecd100ef47804b0636326
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.