diff for duplicates of <20110610003407.GA27964@cmpxchg.org> diff --git a/a/1.txt b/N1/1.txt index 8eb5ff1..38b6242 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -6,33 +6,33 @@ On Fri, Jun 10, 2011 at 08:47:55AM +0900, Minchan Kim wrote: > >>> > When a memcg hits its hard limit, hierarchical target reclaim is > >>> > invoked, which goes through all contributing memcgs in the hierarchy > >>> > below the offending memcg and reclaims from the respective per-memcg -> >>> > lru lists. This distributes pressure fairly among all involved +> >>> > lru lists. This distributes pressure fairly among all involved > >>> > memcgs, and pages are aged with respect to their list buddies. > >>> > > >>> > When global memory pressure arises, however, all this is dropped -> >>> > overboard. Pages are reclaimed based on global lru lists that have +> >>> > overboard. Pages are reclaimed based on global lru lists that have > >>> > nothing to do with container-internal age, and some memcgs may be > >>> > reclaimed from much more than others. > >>> > > >>> > This patch makes traditional global reclaim consider container -> >>> > boundaries and no longer scan the global lru lists. For each zone +> >>> > boundaries and no longer scan the global lru lists. For each zone > >>> > scanned, the memcg hierarchy is walked and pages are reclaimed from -> >>> > the per-memcg lru lists of the respective zone. For now, the +> >>> > the per-memcg lru lists of the respective zone. For now, the > >>> > hierarchy walk is bounded to one full round-trip through the > >>> > hierarchy, or if the number of reclaimed pages reach the overall > >>> > reclaim target, whichever comes first. > >>> > > >>> > Conceptually, global memory pressure is then treated as if the root -> >>> > memcg had hit its limit. Since all existing memcgs contribute to the +> >>> > memcg had hit its limit. Since all existing memcgs contribute to the > >>> > usage of the root memcg, global reclaim is nothing more than target -> >>> > reclaim starting from the root memcg. The code is mostly the same for +> >>> > reclaim starting from the root memcg. The code is mostly the same for > >>> > both cases, except for a few heuristics and statistics that do not -> >>> > always apply. They are distinguished by a newly introduced +> >>> > always apply. They are distinguished by a newly introduced > >>> > global_reclaim() primitive. > >>> > > >>> > One implication of this change is that pages have to be linked to the > >>> > lru lists of the root memcg again, which could be optimized away with -> >>> > the old scheme. The costs are not measurable, though, even with +> >>> > the old scheme. The costs are not measurable, though, even with > >>> > worst-case microbenchmarks. > >>> > > >>> > As global reclaim no longer relies on global lru lists, this change is @@ -62,7 +62,7 @@ On Fri, Jun 10, 2011 at 08:47:55AM +0900, Minchan Kim wrote: > >> > >> The number of pages scanned per iteration is essentially > >> -> >> number of lru pages in memcg-zone >> priority +> >> number of lru pages in memcg-zone >> priority > >> > >> so we scan relatively more pages from B than from A each round. > >> @@ -105,3 +105,10 @@ increase the priority and iterate again over the hierarchy. for each zone: for each memcg: do_shrink_zone(prio, zone, sc = { .mem_cgroup = memcg }) + +-- +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/ . +Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ +Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> diff --git a/a/content_digest b/N1/content_digest index 0fcda0e..c1a7fb3 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -31,33 +31,33 @@ "> >>> > When a memcg hits its hard limit, hierarchical target reclaim is\n" "> >>> > invoked, which goes through all contributing memcgs in the hierarchy\n" "> >>> > below the offending memcg and reclaims from the respective per-memcg\n" - "> >>> > lru lists. \302\240This distributes pressure fairly among all involved\n" + "> >>> > lru lists. This distributes pressure fairly among all involved\n" "> >>> > memcgs, and pages are aged with respect to their list buddies.\n" "> >>> >\n" "> >>> > When global memory pressure arises, however, all this is dropped\n" - "> >>> > overboard. \302\240Pages are reclaimed based on global lru lists that have\n" + "> >>> > overboard. Pages are reclaimed based on global lru lists that have\n" "> >>> > nothing to do with container-internal age, and some memcgs may be\n" "> >>> > reclaimed from much more than others.\n" "> >>> >\n" "> >>> > This patch makes traditional global reclaim consider container\n" - "> >>> > boundaries and no longer scan the global lru lists. \302\240For each zone\n" + "> >>> > boundaries and no longer scan the global lru lists. For each zone\n" "> >>> > scanned, the memcg hierarchy is walked and pages are reclaimed from\n" - "> >>> > the per-memcg lru lists of the respective zone. \302\240For now, the\n" + "> >>> > the per-memcg lru lists of the respective zone. For now, the\n" "> >>> > hierarchy walk is bounded to one full round-trip through the\n" "> >>> > hierarchy, or if the number of reclaimed pages reach the overall\n" "> >>> > reclaim target, whichever comes first.\n" "> >>> >\n" "> >>> > Conceptually, global memory pressure is then treated as if the root\n" - "> >>> > memcg had hit its limit. \302\240Since all existing memcgs contribute to the\n" + "> >>> > memcg had hit its limit. Since all existing memcgs contribute to the\n" "> >>> > usage of the root memcg, global reclaim is nothing more than target\n" - "> >>> > reclaim starting from the root memcg. \302\240The code is mostly the same for\n" + "> >>> > reclaim starting from the root memcg. The code is mostly the same for\n" "> >>> > both cases, except for a few heuristics and statistics that do not\n" - "> >>> > always apply. \302\240They are distinguished by a newly introduced\n" + "> >>> > always apply. They are distinguished by a newly introduced\n" "> >>> > global_reclaim() primitive.\n" "> >>> >\n" "> >>> > One implication of this change is that pages have to be linked to the\n" "> >>> > lru lists of the root memcg again, which could be optimized away with\n" - "> >>> > the old scheme. \302\240The costs are not measurable, though, even with\n" + "> >>> > the old scheme. The costs are not measurable, though, even with\n" "> >>> > worst-case microbenchmarks.\n" "> >>> >\n" "> >>> > As global reclaim no longer relies on global lru lists, this change is\n" @@ -87,7 +87,7 @@ "> >>\n" "> >> The number of pages scanned per iteration is essentially\n" "> >>\n" - "> >> \302\240 \302\240 \302\240 \302\240number of lru pages in memcg-zone >> priority\n" + "> >> number of lru pages in memcg-zone >> priority\n" "> >>\n" "> >> so we scan relatively more pages from B than from A each round.\n" "> >>\n" @@ -129,6 +129,13 @@ "\tfor each prio:\n" "\t for each zone:\n" "\t for each memcg:\n" - "\t do_shrink_zone(prio, zone, sc = { .mem_cgroup = memcg })" + "\t do_shrink_zone(prio, zone, sc = { .mem_cgroup = memcg })\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" + "Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/\n" + "Don't email: <a href=mailto:\"dont@kvack.org\"> email@kvack.org </a>" -b7ad1abb47e3d84884e4c81c6e26abe51e5249eebdcfe01426f6c98f50b83d98 +70c07d91046e77c1e1733e932d0c0990e8e8685ee2397139f97678fc9a022a7f
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.