diff for duplicates of <20090819140053.GA7628@localhost> diff --git a/a/1.txt b/N1/1.txt index b1f6369..d29cb15 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -16,7 +16,7 @@ On Wed, Aug 19, 2009 at 09:38:05PM +0800, Minchan Kim wrote: > >> >> >> > >> >> >> Currently, mlock() systemcall doesn't gurantee to mark the page PG_Mlocked > >> >> > -> >> >> > mark PG_mlocked +> >> >> > A A A A A A A A A A A A A A A A A A A A A A A A A A mark PG_mlocked > >> >> > > >> >> >> because some race prevent page grabbing. > >> >> >> In that case, instead vmscan move the page to unevictable lru. @@ -28,7 +28,7 @@ On Wed, Aug 19, 2009 at 09:38:05PM +0800, Minchan Kim wrote: > >> >> >> > >> >> >> Plus, vmscan should mark PG_Mlocked when cull mlocked page. > >> >> > -> >> >> > PG_mlocked +> >> >> > A A A A A A A A A A A A A PG_mlocked > >> >> > > >> >> >> Otherwise vm stastics show strange number. > >> >> >> @@ -42,17 +42,17 @@ On Wed, Aug 19, 2009 at 09:38:05PM +0800, Minchan Kim wrote: > >> >> > >> >> >> Index: b/mm/rmap.c > >> >> >> =================================================================== -> >> >> >> --- a/mm/rmap.c 2009-08-18 19:48:14.000000000 +0900 -> >> >> >> +++ b/mm/rmap.c 2009-08-18 23:47:34.000000000 +0900 +> >> >> >> --- a/mm/rmap.c A A A 2009-08-18 19:48:14.000000000 +0900 +> >> >> >> +++ b/mm/rmap.c A A A 2009-08-18 23:47:34.000000000 +0900 > >> >> >> @@ -362,7 +362,9 @@ static int page_referenced_one(struct pa -> >> >> >> * unevictable list. -> >> >> >> */ -> >> >> >> if (vma->vm_flags & VM_LOCKED) { -> >> >> >> - *mapcount = 1; /* break early from loop */ -> >> >> >> + *mapcount = 1; /* break early from loop */ -> >> >> >> + *vm_flags |= VM_LOCKED; /* for prevent to move active list */ +> >> >> >> A A A A * unevictable list. +> >> >> >> A A A A */ +> >> >> >> A A A if (vma->vm_flags & VM_LOCKED) { +> >> >> >> - A A A A A A *mapcount = 1; A /* break early from loop */ +> >> >> >> + A A A A A A *mapcount = 1; A A A A A /* break early from loop */ +> >> >> >> + A A A A A A *vm_flags |= VM_LOCKED; /* for prevent to move active list */ > >> >> > -> >> >> >> + try_set_page_mlocked(vma, page); +> >> >> >> + A A A A A A try_set_page_mlocked(vma, page); > >> >> > > >> >> > That call is not absolutely necessary? > >> >> @@ -84,7 +84,7 @@ On Wed, Aug 19, 2009 at 09:38:05PM +0800, Minchan Kim wrote: Yes, indeed! > > - the "if (VM_LOCKED) referenced = 0" in page_referenced() could -> > cover both active/inactive vmscan +> > A cover both active/inactive vmscan > > ASAP we set PG_mlocked in page, we can save unnecessary vmscan cost from > active list to inactive list. But I think it's rare case so that there @@ -109,11 +109,11 @@ Fengguang > > I did like your proposed > > -> > if (sc->order <= PAGE_ALLOC_COSTLY_ORDER && -> > - referenced && page_mapping_inuse(page)) -> > + referenced && page_mapping_inuse(page) -> > + && !(vm_flags & VM_LOCKED)) -> > goto activate_locked; +> > A A A A A A A A if (sc->order <= PAGE_ALLOC_COSTLY_ORDER && +> > - A A A A A A A A A A A A A A A A A A A referenced && page_mapping_inuse(page)) +> > + A A A A A A A A A A A A A A A A A A A referenced && page_mapping_inuse(page) +> > + A A A A A A A A A A A A A A A A A A A && !(vm_flags & VM_LOCKED)) +> > A A A A A A A A A A A A goto activate_locked; > > > > which looks more intuitive and less confusing. > > @@ -126,3 +126,9 @@ Fengguang > -- > Kind 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> diff --git a/a/content_digest b/N1/content_digest index ba3d99a..2920bfd 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -46,7 +46,7 @@ "> >> >> >>\n" "> >> >> >> Currently, mlock() systemcall doesn't gurantee to mark the page PG_Mlocked\n" "> >> >> >\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\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240mark PG_mlocked\n" + "> >> >> > A A A A A A A A A A A A A A A A A A A A A A A A A A mark PG_mlocked\n" "> >> >> >\n" "> >> >> >> because some race prevent page grabbing.\n" "> >> >> >> In that case, instead vmscan move the page to unevictable lru.\n" @@ -58,7 +58,7 @@ "> >> >> >>\n" "> >> >> >> Plus, vmscan should mark PG_Mlocked when cull mlocked page.\n" "> >> >> >\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 PG_mlocked\n" + "> >> >> > A A A A A A A A A A A A A PG_mlocked\n" "> >> >> >\n" "> >> >> >> Otherwise vm stastics show strange number.\n" "> >> >> >>\n" @@ -72,17 +72,17 @@ "> >> >>\n" "> >> >> >> Index: b/mm/rmap.c\n" "> >> >> >> ===================================================================\n" - "> >> >> >> --- a/mm/rmap.c \302\240 \302\240 \302\240 2009-08-18 19:48:14.000000000 +0900\n" - "> >> >> >> +++ b/mm/rmap.c \302\240 \302\240 \302\240 2009-08-18 23:47:34.000000000 +0900\n" + "> >> >> >> --- a/mm/rmap.c A A A 2009-08-18 19:48:14.000000000 +0900\n" + "> >> >> >> +++ b/mm/rmap.c A A A 2009-08-18 23:47:34.000000000 +0900\n" "> >> >> >> @@ -362,7 +362,9 @@ static int page_referenced_one(struct pa\n" - "> >> >> >> \302\240 \302\240 \302\240 \302\240* unevictable list.\n" - "> >> >> >> \302\240 \302\240 \302\240 \302\240*/\n" - "> >> >> >> \302\240 \302\240 \302\240 if (vma->vm_flags & VM_LOCKED) {\n" - "> >> >> >> - \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 *mapcount = 1; \302\240/* break early from loop */\n" - "> >> >> >> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 *mapcount = 1; \302\240 \302\240 \302\240 \302\240 \302\240/* break early from loop */\n" - "> >> >> >> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 *vm_flags |= VM_LOCKED; /* for prevent to move active list */\n" + "> >> >> >> A A A A * unevictable list.\n" + "> >> >> >> A A A A */\n" + "> >> >> >> A A A if (vma->vm_flags & VM_LOCKED) {\n" + "> >> >> >> - A A A A A A *mapcount = 1; A /* break early from loop */\n" + "> >> >> >> + A A A A A A *mapcount = 1; A A A A A /* break early from loop */\n" + "> >> >> >> + A A A A A A *vm_flags |= VM_LOCKED; /* for prevent to move active list */\n" "> >> >> >\n" - "> >> >> >> + \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 try_set_page_mlocked(vma, page);\n" + "> >> >> >> + A A A A A A try_set_page_mlocked(vma, page);\n" "> >> >> >\n" "> >> >> > That call is not absolutely necessary?\n" "> >> >>\n" @@ -114,7 +114,7 @@ "Yes, indeed!\n" "\n" "> > - the \"if (VM_LOCKED) referenced = 0\" in page_referenced() could\n" - "> > \302\240cover both active/inactive vmscan\n" + "> > A cover both active/inactive vmscan\n" "> \n" "> ASAP we set PG_mlocked in page, we can save unnecessary vmscan cost from\n" "> active list to inactive list. But I think it's rare case so that there\n" @@ -139,11 +139,11 @@ "\n" "> > I did like your proposed\n" "> >\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240if (sc->order <= PAGE_ALLOC_COSTLY_ORDER &&\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\240 \302\240 \302\240 \302\240 referenced && page_mapping_inuse(page))\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\240 \302\240 \302\240 \302\240 referenced && page_mapping_inuse(page)\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\240 \302\240 \302\240 \302\240 && !(vm_flags & VM_LOCKED))\n" - "> > \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240goto activate_locked;\n" + "> > A A A A A A A A if (sc->order <= PAGE_ALLOC_COSTLY_ORDER &&\n" + "> > - A A A A A A A A A A A A A A A A A A A referenced && page_mapping_inuse(page))\n" + "> > + A A A A A A A A A A A A A A A A A A A referenced && page_mapping_inuse(page)\n" + "> > + A A A A A A A A A A A A A A A A A A A && !(vm_flags & VM_LOCKED))\n" + "> > A A A A A A A A A A A A goto activate_locked;\n" "> >\n" "> > which looks more intuitive and less confusing.\n" "> >\n" @@ -155,6 +155,12 @@ "> \n" "> -- \n" "> Kind regards,\n" - > Minchan Kim + "> Minchan Kim\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>" -f8c2e82477cfa1d2486a881232f87d2e0eb395440c52255ba619c84a92ccb6d7 +8ba03923457257d6d1b61c6b55c133a81895a60f1d1cfa47c20ce8c8e6729fd9
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.