search for: __pagemovable

Displaying 20 results from an estimated 57 matches for "__pagemovable".

2016 May 27
2
[PATCH v6 02/12] mm: migrate: support non-lru movable page migration
...@@ -81,6 +81,41 @@ static inline bool migrate_async_suitable(int migratetype) > > #ifdef CONFIG_COMPACTION > > +int PageMovable(struct page *page) > +{ > + struct address_space *mapping; > + > + WARN_ON(!PageLocked(page)); Why not VM_BUG_ON_PAGE as elsewhere? > + if (!__PageMovable(page)) > + goto out; Just return 0. > + > + mapping = page_mapping(page); > + if (mapping && mapping->a_ops && mapping->a_ops->isolate_page) > + return 1; > +out: > + return 0; > +} > +EXPORT_SYMBOL(PageMovable); > + > +void __SetPageMov...
2016 May 27
2
[PATCH v6 02/12] mm: migrate: support non-lru movable page migration
...@@ -81,6 +81,41 @@ static inline bool migrate_async_suitable(int migratetype) > > #ifdef CONFIG_COMPACTION > > +int PageMovable(struct page *page) > +{ > + struct address_space *mapping; > + > + WARN_ON(!PageLocked(page)); Why not VM_BUG_ON_PAGE as elsewhere? > + if (!__PageMovable(page)) > + goto out; Just return 0. > + > + mapping = page_mapping(page); > + if (mapping && mapping->a_ops && mapping->a_ops->isolate_page) > + return 1; > +out: > + return 0; > +} > +EXPORT_SYMBOL(PageMovable); > + > +void __SetPageMov...
2016 May 09
0
[PATCH v5 02/12] mm: migrate: support non-lru movable page migration
...e->mapping = page->mapping | PAGE_MAPPING_MOVABLE; so driver shouldn't access page->mapping directly. Instead, driver should use page_mapping which mask off the low two bits of page->mapping so it can get right struct address_space. For testing of non-lru movable page, VM supports __PageMovable function. However, it doesn't guarantee to identify non-lru movable page because page->mapping field is unified with other variables in struct page. As well, if driver releases the page after isolation by VM, page->mapping doesn't have stable value although it has PAGE_MAPPING_MOVABLE...
2016 May 30
5
PATCH v6v2 02/12] mm: migrate: support non-lru movable page migration
...e->mapping = page->mapping | PAGE_MAPPING_MOVABLE; so driver shouldn't access page->mapping directly. Instead, driver should use page_mapping which mask off the low two bits of page->mapping so it can get right struct address_space. For testing of non-lru movable page, VM supports __PageMovable function. However, it doesn't guarantee to identify non-lru movable page because page->mapping field is unified with other variables in struct page. As well, if driver releases the page after isolation by VM, page->mapping doesn't have stable value although it has PAGE_MAPPING_MOVABLE...
2016 May 30
5
PATCH v6v2 02/12] mm: migrate: support non-lru movable page migration
...e->mapping = page->mapping | PAGE_MAPPING_MOVABLE; so driver shouldn't access page->mapping directly. Instead, driver should use page_mapping which mask off the low two bits of page->mapping so it can get right struct address_space. For testing of non-lru movable page, VM supports __PageMovable function. However, it doesn't guarantee to identify non-lru movable page because page->mapping field is unified with other variables in struct page. As well, if driver releases the page after isolation by VM, page->mapping doesn't have stable value although it has PAGE_MAPPING_MOVABLE...
2016 May 20
5
[PATCH v6 00/12] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 May 20
5
[PATCH v6 00/12] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 May 30
0
[PATCH v6 02/12] mm: migrate: support non-lru movable page migration
...ruct address_space *mapping; > >+ > >+ WARN_ON(!PageLocked(page)); > > Why not VM_BUG_ON_PAGE as elsewhere? I have backported this patchset to huge old kernel which doesn't have VM_BUG_ON_PAGE and forgot to correct it beforre sending mainline. Thanks. > > >+ if (!__PageMovable(page)) > >+ goto out; > > Just return 0. Maybe I love goto. You realized me. I will split up will her. > > >+ > >+ mapping = page_mapping(page); > >+ if (mapping && mapping->a_ops && mapping->a_ops->isolate_page) > >+ return 1; &...
2016 May 20
0
[PATCH v6 02/12] mm: migrate: support non-lru movable page migration
...e->mapping = page->mapping | PAGE_MAPPING_MOVABLE; so driver shouldn't access page->mapping directly. Instead, driver should use page_mapping which mask off the low two bits of page->mapping so it can get right struct address_space. For testing of non-lru movable page, VM supports __PageMovable function. However, it doesn't guarantee to identify non-lru movable page because page->mapping field is unified with other variables in struct page. As well, if driver releases the page after isolation by VM, page->mapping doesn't have stable value although it has PAGE_MAPPING_MOVABLE...
2016 May 31
0
[PATCH v6v3 02/12] mm: migrate: support non-lru movable page migration
...e->mapping = page->mapping | PAGE_MAPPING_MOVABLE; so driver shouldn't access page->mapping directly. Instead, driver should use page_mapping which mask off the low two bits of page->mapping so it can get right struct address_space. For testing of non-lru movable page, VM supports __PageMovable function. However, it doesn't guarantee to identify non-lru movable page because page->mapping field is unified with other variables in struct page. As well, if driver releases the page after isolation by VM, page->mapping doesn't have stable value although it has PAGE_MAPPING_MOVABLE...
2016 Apr 27
4
[PATCH v4 00/13] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 Apr 27
4
[PATCH v4 00/13] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 May 09
5
[PATCH v5 00/13] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 May 09
5
[PATCH v5 00/13] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 May 09
0
[PATCH v5 03/12] mm: balloon: use general non-lru movable page feature
...migratepages_block(struct compact_control *cc, unsigned long low_pfn, */ is_lru = PageLRU(page); if (!is_lru) { - if (unlikely(balloon_page_movable(page))) { - if (balloon_page_isolate(page)) { - /* Successfully isolated */ - goto isolate_success; - } - } - /* * __PageMovable can return false positive so we need * to verify it under page_lock. diff --git a/mm/migrate.c b/mm/migrate.c index 24205e1f9204..5478ea1c809f 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -199,14 +199,12 @@ void putback_movable_pages(struct list_head *l) list_del(&page->lru); d...
2016 May 20
0
[PATCH v6 03/12] mm: balloon: use general non-lru movable page feature
...migratepages_block(struct compact_control *cc, unsigned long low_pfn, */ is_lru = PageLRU(page); if (!is_lru) { - if (unlikely(balloon_page_movable(page))) { - if (balloon_page_isolate(page)) { - /* Successfully isolated */ - goto isolate_success; - } - } - /* * __PageMovable can return false positive so we need * to verify it under page_lock. diff --git a/mm/migrate.c b/mm/migrate.c index 57559ca7c904..d1b3acf9b9a9 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -168,14 +168,12 @@ void putback_movable_pages(struct list_head *l) list_del(&page->lru); d...
2016 May 31
7
[PATCH v7 00/12] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 May 31
7
[PATCH v7 00/12] Support non-lru page migration
Recently, I got many reports about perfermance degradation in embedded system(Android mobile phone, webOS TV and so on) and easy fork fail. The problem was fragmentation caused by zram and GPU driver mainly. With memory pressure, their pages were spread out all of pageblock and it cannot be migrated with current compaction algorithm which supports only LRU pages. In the end, compaction cannot
2016 Jun 13
2
[PATCH v6v3 02/12] mm: migrate: support non-lru movable page migration
On 05/31/2016 05:31 AM, Minchan Kim wrote: > @@ -791,6 +921,7 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > int rc = -EAGAIN; > int page_was_mapped = 0; > struct anon_vma *anon_vma = NULL; > + bool is_lru = !__PageMovable(page); > > if (!trylock_page(page)) { > if (!force || mode == MIGRATE_ASYNC) > @@ -871,6 +1002,11 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > goto out_unlock_both; > } > > + if (unlikely(!is_lru)) { > + rc = move_to_new_page(ne...
2016 Jun 13
2
[PATCH v6v3 02/12] mm: migrate: support non-lru movable page migration
On 05/31/2016 05:31 AM, Minchan Kim wrote: > @@ -791,6 +921,7 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > int rc = -EAGAIN; > int page_was_mapped = 0; > struct anon_vma *anon_vma = NULL; > + bool is_lru = !__PageMovable(page); > > if (!trylock_page(page)) { > if (!force || mode == MIGRATE_ASYNC) > @@ -871,6 +1002,11 @@ static int __unmap_and_move(struct page *page, struct page *newpage, > goto out_unlock_both; > } > > + if (unlikely(!is_lru)) { > + rc = move_to_new_page(ne...