diff for duplicates of <20090628142239.GA20986@localhost> diff --git a/a/1.txt b/N1/1.txt index b136ea3..5dd2f13 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -6,35 +6,35 @@ On Sun, Jun 28, 2009 at 09:36:49PM +0800, Minchan Kim wrote: > >> On Sat, Jun 27, 2009 at 08:54:12PM +0800, Johannes Weiner wrote: > >>> On Sat, Jun 27, 2009 at 08:12:49AM +0100, David Howells wrote: > >>> > -> >>> > I've managed to bisect things to find the commit that causes the OOMs. It's: +> >>> > I've managed to bisect things to find the commit that causes the OOMs. A It's: > >>> > -> >>> > commit 69c854817566db82c362797b4a6521d0b00fe1d8 -> >>> > Author: MinChan Kim <minchan.kim@gmail.com> -> >>> > Date: Tue Jun 16 15:32:44 2009 -0700 +> >>> > A A commit 69c854817566db82c362797b4a6521d0b00fe1d8 +> >>> > A A Author: MinChan Kim <minchan.kim@gmail.com> +> >>> > A A Date: A Tue Jun 16 15:32:44 2009 -0700 > >>> > -> >>> > vmscan: prevent shrinking of active anon lru list in case of no swap space V3 +> >>> > A A A A vmscan: prevent shrinking of active anon lru list in case of no swap space V3 > >>> > -> >>> > shrink_zone() can deactivate active anon pages even if we don't have a -> >>> > swap device. Many embedded products don't have a swap device. So the -> >>> > deactivation of anon pages is unnecessary. +> >>> > A A A A shrink_zone() can deactivate active anon pages even if we don't have a +> >>> > A A A A swap device. A Many embedded products don't have a swap device. A So the +> >>> > A A A A deactivation of anon pages is unnecessary. > >>> > -> >>> > This patch prevents unnecessary deactivation of anon lru pages. But, it -> >>> > don't prevent aging of anon pages to swap out. +> >>> > A A A A This patch prevents unnecessary deactivation of anon lru pages. A But, it +> >>> > A A A A don't prevent aging of anon pages to swap out. > >>> > -> >>> > Signed-off-by: Minchan Kim <minchan.kim@gmail.com> -> >>> > Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> -> >>> > Cc: Johannes Weiner <hannes@cmpxchg.org> -> >>> > Acked-by: Rik van Riel <riel@redhat.com> -> >>> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> -> >>> > Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> +> >>> > A A A A Signed-off-by: Minchan Kim <minchan.kim@gmail.com> +> >>> > A A A A Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> +> >>> > A A A A Cc: Johannes Weiner <hannes@cmpxchg.org> +> >>> > A A A A Acked-by: Rik van Riel <riel@redhat.com> +> >>> > A A A A Signed-off-by: Andrew Morton <akpm@linux-foundation.org> +> >>> > A A A A Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> > >>> > -> >>> > This exhibits the problem. The previous commit: +> >>> > This exhibits the problem. A The previous commit: > >>> > -> >>> > commit 35282a2de4e5e4e173ab61aa9d7015886021a821 -> >>> > Author: Brice Goglin <Brice.Goglin@ens-lyon.org> -> >>> > Date: Tue Jun 16 15:32:43 2009 -0700 +> >>> > A A commit 35282a2de4e5e4e173ab61aa9d7015886021a821 +> >>> > A A Author: Brice Goglin <Brice.Goglin@ens-lyon.org> +> >>> > A A Date: A Tue Jun 16 15:32:43 2009 -0700 > >>> > -> >>> > migration: only migrate_prep() once per move_pages() +> >>> > A A A A migration: only migrate_prep() once per move_pages() > >>> > > >>> > survives 16 iterations of the LTP syscall testsuite without exhibiting the > >>> > problem. @@ -46,14 +46,14 @@ On Sun, Jun 28, 2009 at 09:36:49PM +0800, Minchan Kim wrote: > >>> --- a/mm/vmscan.c > >>> +++ b/mm/vmscan.c > >>> @@ -1570,7 +1570,7 @@ static void shrink_zone(int priority, struct zone *zone, -> >>> * Even if we did not try to evict anon pages at all, we want to -> >>> * rebalance the anon lru active/inactive ratio. -> >>> */ -> >>> - if (inactive_anon_is_low(zone, sc)) -> >>> + if (inactive_anon_is_low(zone, sc) && nr_swap_pages > 0) -> >>> shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0); +> >>> A A A A * Even if we did not try to evict anon pages at all, we want to +> >>> A A A A * rebalance the anon lru active/inactive ratio. +> >>> A A A A */ +> >>> - A A if (inactive_anon_is_low(zone, sc)) +> >>> + A A if (inactive_anon_is_low(zone, sc) && nr_swap_pages > 0) +> >>> A A A A A A A shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0); > >>> -> >>> throttle_vm_writeout(sc->gfp_mask); +> >>> A A A throttle_vm_writeout(sc->gfp_mask); > >>> > >>> When this was discussed, I think we missed that nr_swap_pages can > >>> actually get zero on swap systems as well and this should have been @@ -64,8 +64,8 @@ On Sun, Jun 28, 2009 at 09:36:49PM +0800, Minchan Kim wrote: > >> total_swap_pages is the better choice in this situation. > >> > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426766] Active_anon:290797 active_file:28 inactive_anon:97034 -> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426767] inactive_file:61 unevictable:11322 dirty:0 writeback:0 unstable:0 -> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426768] free:3341 slab:13776 mapped:5880 pagetables:6851 bounce:0 +> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426767] A inactive_file:61 unevictable:11322 dirty:0 writeback:0 unstable:0 +> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426768] A free:3341 slab:13776 mapped:5880 pagetables:6851 bounce:0 > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426772] DMA free:7776kB min:40kB low:48kB high:60kB active_anon:556kB inactive_anon:524kB > >> +active_file:16kB inactive_file:0kB unevictable:0kB present:15340kB pages_scanned:30 all_unreclaimable? no > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426775] lowmem_reserve[]: 0 1935 1935 1935 @@ -80,7 +80,7 @@ On Sun, Jun 28, 2009 at 09:36:49PM +0800, Minchan Kim wrote: > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426804] 151250 total pagecache pages > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426806] 18973 pages in swap cache > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426808] Swap cache stats: add 610640, delete 591667, find 144356/181468 -> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426810] Free swap = 0kB +> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426810] Free swap A = 0kB > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426811] Total swap = 979956kB > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.434828] 507136 pages RAM > >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.434831] 23325 pages reserved @@ -90,9 +90,9 @@ On Sun, Jun 28, 2009 at 09:36:49PM +0800, Minchan Kim wrote: > >> > >> In David's OOM case, there are two symptoms: > >> 1) 70000 unaccounted/leaked pages as found by Andrew -> >> (plus rather big number of PG_buddy and pagetable pages) +> >> A (plus rather big number of PG_buddy and pagetable pages) > >> 2) almost zero active_file/inactive_file; small inactive_anon; -> >> many slab and active_anon pages. +> >> A many slab and active_anon pages. > >> > >> In the situation of (2), the slab cache is _under_ scanned. So David > >> got OOM when vmscan should have squeezed some free pages from the slab @@ -182,3 +182,9 @@ index 026f452..4281c6f 100644 } #ifdef CONFIG_HIBERNATION + +-- +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 528c470..4679dba 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -36,35 +36,35 @@ "> >> On Sat, Jun 27, 2009 at 08:54:12PM +0800, Johannes Weiner wrote:\n" "> >>> On Sat, Jun 27, 2009 at 08:12:49AM +0100, David Howells wrote:\n" "> >>> >\n" - "> >>> > I've managed to bisect things to find the commit that causes the OOMs. \302\240It's:\n" + "> >>> > I've managed to bisect things to find the commit that causes the OOMs. A It's:\n" "> >>> >\n" - "> >>> > \302\240 \302\240 commit 69c854817566db82c362797b4a6521d0b00fe1d8\n" - "> >>> > \302\240 \302\240 Author: MinChan Kim <minchan.kim@gmail.com>\n" - "> >>> > \302\240 \302\240 Date: \302\240 Tue Jun 16 15:32:44 2009 -0700\n" + "> >>> > A A commit 69c854817566db82c362797b4a6521d0b00fe1d8\n" + "> >>> > A A Author: MinChan Kim <minchan.kim@gmail.com>\n" + "> >>> > A A Date: A Tue Jun 16 15:32:44 2009 -0700\n" "> >>> >\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 vmscan: prevent shrinking of active anon lru list in case of no swap space V3\n" + "> >>> > A A A A vmscan: prevent shrinking of active anon lru list in case of no swap space V3\n" "> >>> >\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 shrink_zone() can deactivate active anon pages even if we don't have a\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 swap device. \302\240Many embedded products don't have a swap device. \302\240So the\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 deactivation of anon pages is unnecessary.\n" + "> >>> > A A A A shrink_zone() can deactivate active anon pages even if we don't have a\n" + "> >>> > A A A A swap device. A Many embedded products don't have a swap device. A So the\n" + "> >>> > A A A A deactivation of anon pages is unnecessary.\n" "> >>> >\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 This patch prevents unnecessary deactivation of anon lru pages. \302\240But, it\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 don't prevent aging of anon pages to swap out.\n" + "> >>> > A A A A This patch prevents unnecessary deactivation of anon lru pages. A But, it\n" + "> >>> > A A A A don't prevent aging of anon pages to swap out.\n" "> >>> >\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 Signed-off-by: Minchan Kim <minchan.kim@gmail.com>\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 Cc: Johannes Weiner <hannes@cmpxchg.org>\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 Acked-by: Rik van Riel <riel@redhat.com>\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 Signed-off-by: Andrew Morton <akpm@linux-foundation.org>\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n" + "> >>> > A A A A Signed-off-by: Minchan Kim <minchan.kim@gmail.com>\n" + "> >>> > A A A A Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>\n" + "> >>> > A A A A Cc: Johannes Weiner <hannes@cmpxchg.org>\n" + "> >>> > A A A A Acked-by: Rik van Riel <riel@redhat.com>\n" + "> >>> > A A A A Signed-off-by: Andrew Morton <akpm@linux-foundation.org>\n" + "> >>> > A A A A Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>\n" "> >>> >\n" - "> >>> > This exhibits the problem. \302\240The previous commit:\n" + "> >>> > This exhibits the problem. A The previous commit:\n" "> >>> >\n" - "> >>> > \302\240 \302\240 commit 35282a2de4e5e4e173ab61aa9d7015886021a821\n" - "> >>> > \302\240 \302\240 Author: Brice Goglin <Brice.Goglin@ens-lyon.org>\n" - "> >>> > \302\240 \302\240 Date: \302\240 Tue Jun 16 15:32:43 2009 -0700\n" + "> >>> > A A commit 35282a2de4e5e4e173ab61aa9d7015886021a821\n" + "> >>> > A A Author: Brice Goglin <Brice.Goglin@ens-lyon.org>\n" + "> >>> > A A Date: A Tue Jun 16 15:32:43 2009 -0700\n" "> >>> >\n" - "> >>> > \302\240 \302\240 \302\240 \302\240 migration: only migrate_prep() once per move_pages()\n" + "> >>> > A A A A migration: only migrate_prep() once per move_pages()\n" "> >>> >\n" "> >>> > survives 16 iterations of the LTP syscall testsuite without exhibiting the\n" "> >>> > problem.\n" @@ -76,14 +76,14 @@ "> >>> --- a/mm/vmscan.c\n" "> >>> +++ b/mm/vmscan.c\n" "> >>> @@ -1570,7 +1570,7 @@ static void shrink_zone(int priority, struct zone *zone,\n" - "> >>> \302\240 \302\240 \302\240 \302\240* Even if we did not try to evict anon pages at all, we want to\n" - "> >>> \302\240 \302\240 \302\240 \302\240* rebalance the anon lru active/inactive ratio.\n" - "> >>> \302\240 \302\240 \302\240 \302\240*/\n" - "> >>> - \302\240 \302\240 if (inactive_anon_is_low(zone, sc))\n" - "> >>> + \302\240 \302\240 if (inactive_anon_is_low(zone, sc) && nr_swap_pages > 0)\n" - "> >>> \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0);\n" + "> >>> A A A A * Even if we did not try to evict anon pages at all, we want to\n" + "> >>> A A A A * rebalance the anon lru active/inactive ratio.\n" + "> >>> A A A A */\n" + "> >>> - A A if (inactive_anon_is_low(zone, sc))\n" + "> >>> + A A if (inactive_anon_is_low(zone, sc) && nr_swap_pages > 0)\n" + "> >>> A A A A A A A shrink_active_list(SWAP_CLUSTER_MAX, zone, sc, priority, 0);\n" "> >>>\n" - "> >>> \302\240 \302\240 \302\240 throttle_vm_writeout(sc->gfp_mask);\n" + "> >>> A A A throttle_vm_writeout(sc->gfp_mask);\n" "> >>>\n" "> >>> When this was discussed, I think we missed that nr_swap_pages can\n" "> >>> actually get zero on swap systems as well and this should have been\n" @@ -94,8 +94,8 @@ "> >> total_swap_pages is the better choice in this situation.\n" "> >>\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426766] Active_anon:290797 active_file:28 inactive_anon:97034\n" - "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426767] \302\240inactive_file:61 unevictable:11322 dirty:0 writeback:0 unstable:0\n" - "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426768] \302\240free:3341 slab:13776 mapped:5880 pagetables:6851 bounce:0\n" + "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426767] A inactive_file:61 unevictable:11322 dirty:0 writeback:0 unstable:0\n" + "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426768] A free:3341 slab:13776 mapped:5880 pagetables:6851 bounce:0\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426772] DMA free:7776kB min:40kB low:48kB high:60kB active_anon:556kB inactive_anon:524kB\n" "> >> +active_file:16kB inactive_file:0kB unevictable:0kB present:15340kB pages_scanned:30 all_unreclaimable? no\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426775] lowmem_reserve[]: 0 1935 1935 1935\n" @@ -110,7 +110,7 @@ "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426804] 151250 total pagecache pages\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426806] 18973 pages in swap cache\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426808] Swap cache stats: add 610640, delete 591667, find 144356/181468\n" - "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426810] Free swap \302\240= 0kB\n" + "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426810] Free swap A = 0kB\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.426811] Total swap = 979956kB\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.434828] 507136 pages RAM\n" "> >> Jun 18 07:44:53 jbarnes-g45 kernel: [64377.434831] 23325 pages reserved\n" @@ -120,9 +120,9 @@ "> >>\n" "> >> In David's OOM case, there are two symptoms:\n" "> >> 1) 70000 unaccounted/leaked pages as found by Andrew\n" - "> >> \302\240 (plus rather big number of PG_buddy and pagetable pages)\n" + "> >> A (plus rather big number of PG_buddy and pagetable pages)\n" "> >> 2) almost zero active_file/inactive_file; small inactive_anon;\n" - "> >> \302\240 many slab and active_anon pages.\n" + "> >> A many slab and active_anon pages.\n" "> >>\n" "> >> In the situation of (2), the slab cache is _under_ scanned. So David\n" "> >> got OOM when vmscan should have squeezed some free pages from the slab\n" @@ -211,6 +211,12 @@ "+\treturn nr;\n" " }\n" " \n" - #ifdef CONFIG_HIBERNATION + " #ifdef CONFIG_HIBERNATION\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>" -2260adc30f299e0e02d9c4e259edacc471b9f53fb8e0ac78ed8a7633c520faf0 +c29697351e6cfa61cebd560c8673f41a0ce929e8266120ee22c3f2fa4e44204e
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.