search for: mobile_page

Displaying 16 results from an estimated 16 matches for "mobile_page".

2015 Jul 31
1
[PATCH 2/4] mm/compaction: enable mobile-page migration
...as it was deferred due to past failures */ > #define COMPACT_DEFERRED 0 > @@ -51,6 +54,70 @@ extern void compaction_defer_reset(struct zone *zone, int order, > bool alloc_success); > extern bool compaction_restarting(struct zone *zone, int order); > > +static inline bool mobile_page(struct page *page) > +{ > + return page->mapping && (PageMobile(page) || PageBalloon(page)); What's the locking rule to test mobile_page? Why we need such many checking? Why we need PageBalloon check? You are trying to make generic abstraction for non-LRU page to migrate but...
2015 Jul 31
1
[PATCH 2/4] mm/compaction: enable mobile-page migration
...as it was deferred due to past failures */ > #define COMPACT_DEFERRED 0 > @@ -51,6 +54,70 @@ extern void compaction_defer_reset(struct zone *zone, int order, > bool alloc_success); > extern bool compaction_restarting(struct zone *zone, int order); > > +static inline bool mobile_page(struct page *page) > +{ > + return page->mapping && (PageMobile(page) || PageBalloon(page)); What's the locking rule to test mobile_page? Why we need such many checking? Why we need PageBalloon check? You are trying to make generic abstraction for non-LRU page to migrate but...
2015 Jul 10
1
[RFCv3 2/5] mm/compaction: enable mobile-page migration
...failures */ > #define COMPACT_DEFERRED 0 > @@ -51,6 +54,66 @@ extern void compaction_defer_reset(struct zone *zone, int order, > bool alloc_success); > extern bool compaction_restarting(struct zone *zone, int order); > > +static inline bool mobile_page(struct page *page) > +{ > + return page->mapping && page->mapping->a_ops && Dereferncing mapping->a_ops isn't safe without page-lock and isn't required: all mappings always have ->a_ops. > + (PageMobile(page) || PageBalloon(page)...
2015 Jul 10
1
[RFCv3 2/5] mm/compaction: enable mobile-page migration
...failures */ > #define COMPACT_DEFERRED 0 > @@ -51,6 +54,66 @@ extern void compaction_defer_reset(struct zone *zone, int order, > bool alloc_success); > extern bool compaction_restarting(struct zone *zone, int order); > > +static inline bool mobile_page(struct page *page) > +{ > + return page->mapping && page->mapping->a_ops && Dereferncing mapping->a_ops isn't safe without page-lock and isn't required: all mappings always have ->a_ops. > + (PageMobile(page) || PageBalloon(page)...
2015 Jul 07
0
[RFCv3 2/5] mm/compaction: enable mobile-page migration
.../* compaction didn't start as it was deferred due to past failures */ #define COMPACT_DEFERRED 0 @@ -51,6 +54,66 @@ extern void compaction_defer_reset(struct zone *zone, int order, bool alloc_success); extern bool compaction_restarting(struct zone *zone, int order); +static inline bool mobile_page(struct page *page) +{ + return page->mapping && page->mapping->a_ops && + (PageMobile(page) || PageBalloon(page)); +} + +static inline bool isolate_mobilepage(struct page *page, isolate_mode_t mode) +{ + bool ret; + + /* + * Avoid burning cycles with pages that are yet un...
2015 Jul 27
2
[PATCH 2/4] mm/compaction: enable mobile-page migration
...as it was deferred due to past failures */ > #define COMPACT_DEFERRED 0 > @@ -51,6 +54,70 @@ extern void compaction_defer_reset(struct zone *zone, int order, > bool alloc_success); > extern bool compaction_restarting(struct zone *zone, int order); > > +static inline bool mobile_page(struct page *page) > +{ > + return page->mapping && (PageMobile(page) || PageBalloon(page)); > +} I would put this definition to linux/page-flags.h and rename it to page_mobile (or better page_movable()), which is more common ordering. > + > +static inline bool isolate_...
2015 Jul 27
2
[PATCH 2/4] mm/compaction: enable mobile-page migration
...as it was deferred due to past failures */ > #define COMPACT_DEFERRED 0 > @@ -51,6 +54,70 @@ extern void compaction_defer_reset(struct zone *zone, int order, > bool alloc_success); > extern bool compaction_restarting(struct zone *zone, int order); > > +static inline bool mobile_page(struct page *page) > +{ > + return page->mapping && (PageMobile(page) || PageBalloon(page)); > +} I would put this definition to linux/page-flags.h and rename it to page_mobile (or better page_movable()), which is more common ordering. > + > +static inline bool isolate_...
2015 Jul 13
14
[PATCH 0/4] enable migration of driver pages
From: Gioh Kim <gurugio at hanmail.net> Hello, This series try to enable migration of non-LRU pages, such as driver's page. My ARM-based platform occured severe fragmentation problem after long-term (several days) test. Sometimes even order-3 page allocation failed. It has memory size 512MB ~ 1024MB. 30% ~ 40% memory is consumed for graphic processing and 20~30 memory is reserved for
2015 Jul 13
14
[PATCH 0/4] enable migration of driver pages
From: Gioh Kim <gurugio at hanmail.net> Hello, This series try to enable migration of non-LRU pages, such as driver's page. My ARM-based platform occured severe fragmentation problem after long-term (several days) test. Sometimes even order-3 page allocation failed. It has memory size 512MB ~ 1024MB. 30% ~ 40% memory is consumed for graphic processing and 20~30 memory is reserved for
2015 Jul 07
12
[RFCv3 0/5] enable migration of driver pages
From: Gioh Kim <gurugio at hanmail.net> Hello, This series try to enable migration of non-LRU pages, such as driver's page. My ARM-based platform occured severe fragmentation problem after long-term (several days) test. Sometimes even order-3 page allocation failed. It has memory size 512MB ~ 1024MB. 30% ~ 40% memory is consumed for graphic processing and 20~30 memory is reserved for
2015 Jul 07
12
[RFCv3 0/5] enable migration of driver pages
From: Gioh Kim <gurugio at hanmail.net> Hello, This series try to enable migration of non-LRU pages, such as driver's page. My ARM-based platform occured severe fragmentation problem after long-term (several days) test. Sometimes even order-3 page allocation failed. It has memory size 512MB ~ 1024MB. 30% ~ 40% memory is consumed for graphic processing and 20~30 memory is reserved for
2015 Jul 13
0
[PATCH 2/4] mm/compaction: enable mobile-page migration
.../* compaction didn't start as it was deferred due to past failures */ #define COMPACT_DEFERRED 0 @@ -51,6 +54,70 @@ extern void compaction_defer_reset(struct zone *zone, int order, bool alloc_success); extern bool compaction_restarting(struct zone *zone, int order); +static inline bool mobile_page(struct page *page) +{ + return page->mapping && (PageMobile(page) || PageBalloon(page)); +} + +static inline bool isolate_mobilepage(struct page *page, isolate_mode_t mode) +{ + bool ret = false; + + /* + * Avoid burning cycles with pages that are yet under __free_pages(), + * or just...
2015 Jul 27
0
[PATCH 2/4] mm/compaction: enable mobile-page migration
...MPACT_DEFERRED 0 >> @@ -51,6 +54,70 @@ extern void compaction_defer_reset(struct zone *zone, >> int order, >> bool alloc_success); >> extern bool compaction_restarting(struct zone *zone, int order); >> >> +static inline bool mobile_page(struct page *page) >> +{ >> + return page->mapping && (PageMobile(page) || PageBalloon(page)); >> +} > > > I would put this definition to linux/page-flags.h and rename it to > page_mobile (or better page_movable()), which is more common ordering. >...
2015 Jul 27
1
[PATCH 4/4] mm: remove direct calling of migration
...hanged, 15 deletions(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index 53f0081d..e6644ac 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -844,21 +844,6 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > } > } > > - if (unlikely(mobile_page(page))) { > - /* > - * A mobile page does not need any special attention from > - * physical to virtual reverse mapping procedures. > - * Skip any attempt to unmap PTEs or to remap swap cache, > - * in order to avoid burning cycles at rmap level, and perform > - * the p...
2015 Jul 27
1
[PATCH 4/4] mm: remove direct calling of migration
...hanged, 15 deletions(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index 53f0081d..e6644ac 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -844,21 +844,6 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > } > } > > - if (unlikely(mobile_page(page))) { > - /* > - * A mobile page does not need any special attention from > - * physical to virtual reverse mapping procedures. > - * Skip any attempt to unmap PTEs or to remap swap cache, > - * in order to avoid burning cycles at rmap level, and perform > - * the p...
2015 Jul 13
0
[PATCH 4/4] mm: remove direct calling of migration
...--- mm/migrate.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/mm/migrate.c b/mm/migrate.c index 53f0081d..e6644ac 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -844,21 +844,6 @@ static int __unmap_and_move(struct page *page, struct page *newpage, } } - if (unlikely(mobile_page(page))) { - /* - * A mobile page does not need any special attention from - * physical to virtual reverse mapping procedures. - * Skip any attempt to unmap PTEs or to remap swap cache, - * in order to avoid burning cycles at rmap level, and perform - * the page migration right away (prot...