search for: insert_zspage

Displaying 19 results from an estimated 19 matches for "insert_zspage".

Did you mean: insert_page
2016 Mar 11
0
[PATCH v1 07/19] zsmalloc: reordering function parameter
...ool_stat_create(struct zs_pool *pool, const char *name) { return 0; } @@ -650,8 +650,9 @@ static enum fullness_group get_fullness_group(struct page *first_page) * have. This functions inserts the given zspage into the freelist * identified by <class, fullness_group>. */ -static void insert_zspage(struct page *first_page, struct size_class *class, - enum fullness_group fullness) +static void insert_zspage(struct size_class *class, + enum fullness_group fullness, + struct page *first_page) { struct page **head; @@ -682,8 +683,9 @@ static void insert_zspage(struct page *first_pag...
2016 Mar 11
0
[PATCH v1 05/19] zsmalloc: use first_page rather than page
...+ max_objects = first_page->objects; if (inuse == 0) fg = ZS_EMPTY; @@ -647,12 +649,12 @@ static enum fullness_group get_fullness_group(struct page *page) * have. This functions inserts the given zspage into the freelist * identified by <class, fullness_group>. */ -static void insert_zspage(struct page *page, struct size_class *class, +static void insert_zspage(struct page *first_page, struct size_class *class, enum fullness_group fullness) { struct page **head; - BUG_ON(!is_first_page(page)); + BUG_ON(!is_first_page(first_page)); if (fullness >= _ZS_NR_FULLNESS_GROUP...
2016 Mar 11
0
[PATCH v1 06/19] zsmalloc: clean up many BUG_ON
..._fullness_group(struct page *first_page) { int inuse, max_objects; enum fullness_group fg; - BUG_ON(!is_first_page(first_page)); + + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); inuse = first_page->inuse; max_objects = first_page->objects; @@ -654,7 +655,7 @@ static void insert_zspage(struct page *first_page, struct size_class *class, { struct page **head; - BUG_ON(!is_first_page(first_page)); + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); if (fullness >= _ZS_NR_FULLNESS_GROUPS) return; @@ -686,13 +687,13 @@ static void remove_zspage(struct page *first_...
2016 Mar 11
31
[PATCH v1 00/19] 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 failed to fork easily. The problem was fragmentation caused by zram and GPU driver pages. Their pages cannot be migrated so compaction cannot work well, either so reclaimer ends up shrinking all of working set pages. It made system very slow and even to fail to fork easily.
2016 Mar 11
31
[PATCH v1 00/19] 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 failed to fork easily. The problem was fragmentation caused by zram and GPU driver pages. Their pages cannot be migrated so compaction cannot work well, either so reclaimer ends up shrinking all of working set pages. It made system very slow and even to fail to fork easily.
2016 Mar 21
22
[PATCH v2 00/18] 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 failed to fork easily. The problem was fragmentation caused by zram and GPU driver pages. Their pages cannot be migrated so compaction cannot work well, either so reclaimer ends up shrinking all of working set pages. It made system very slow and even to fail to fork easily.
2016 Mar 21
22
[PATCH v2 00/18] 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 failed to fork easily. The problem was fragmentation caused by zram and GPU driver pages. Their pages cannot be migrated so compaction cannot work well, either so reclaimer ends up shrinking all of working set pages. It made system very slow and even to fail to fork easily.
2016 Mar 12
1
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...> ret = -ENOMEM; > break; > @@ -1684,7 +1681,7 @@ static enum fullness_group putback_zspage(struct zs_pool *pool, > { > enum fullness_group fullness; > > - fullness = get_fullness_group(first_page); > + fullness = get_fullness_group(class, first_page); > insert_zspage(class, fullness, first_page); > set_zspage_mapping(first_page, class->index, fullness); > > @@ -1933,6 +1930,8 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) > class->size = size; > class->index = i; > class->pages_per_zspage = pages_pe...
2016 Mar 12
1
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...> ret = -ENOMEM; > break; > @@ -1684,7 +1681,7 @@ static enum fullness_group putback_zspage(struct zs_pool *pool, > { > enum fullness_group fullness; > > - fullness = get_fullness_group(first_page); > + fullness = get_fullness_group(class, first_page); > insert_zspage(class, fullness, first_page); > set_zspage_mapping(first_page, class->index, fullness); > > @@ -1933,6 +1930,8 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) > class->size = size; > class->index = i; > class->pages_per_zspage = pages_pe...
2016 Mar 30
0
[PATCH v3 11/16] zsmalloc: separate free_zspage from putback_zspage
...target page * - * Return @fist_page's fullness_group + * Return @first_page's updated fullness_group */ static enum fullness_group putback_zspage(struct zs_pool *pool, struct size_class *class, @@ -1764,15 +1765,6 @@ static enum fullness_group putback_zspage(struct zs_pool *pool, insert_zspage(class, fullness, first_page); set_zspage_mapping(first_page, class->index, fullness); - if (fullness == ZS_EMPTY) { - zs_stat_dec(class, OBJ_ALLOCATED, get_maxobj_per_zspage( - class->size, class->pages_per_zspage)); - atomic_long_sub(class->pages_per_zspage, - &pool->...
2016 Mar 11
0
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...e_full(class, d_page)) { unpin_tag(handle); ret = -ENOMEM; break; @@ -1684,7 +1681,7 @@ static enum fullness_group putback_zspage(struct zs_pool *pool, { enum fullness_group fullness; - fullness = get_fullness_group(first_page); + fullness = get_fullness_group(class, first_page); insert_zspage(class, fullness, first_page); set_zspage_mapping(first_page, class->index, fullness); @@ -1933,6 +1930,8 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) class->size = size; class->index = i; class->pages_per_zspage = pages_per_zspage; + class->objs_per_...
2016 Mar 30
0
[PATCH v3 05/16] zsmalloc: keep max_object in size_class
...e_full(class, d_page)) { unpin_tag(handle); ret = -ENOMEM; break; @@ -1687,7 +1684,7 @@ static enum fullness_group putback_zspage(struct zs_pool *pool, { enum fullness_group fullness; - fullness = get_fullness_group(first_page); + fullness = get_fullness_group(class, first_page); insert_zspage(class, fullness, first_page); set_zspage_mapping(first_page, class->index, fullness); @@ -1936,8 +1933,9 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) class->size = size; class->index = i; class->pages_per_zspage = pages_per_zspage; - if (pages_per_zspag...
2016 Mar 14
0
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...; break; > >@@ -1684,7 +1681,7 @@ static enum fullness_group putback_zspage(struct zs_pool *pool, > > { > > enum fullness_group fullness; > > > >- fullness = get_fullness_group(first_page); > >+ fullness = get_fullness_group(class, first_page); > > insert_zspage(class, fullness, first_page); > > set_zspage_mapping(first_page, class->index, fullness); > > > >@@ -1933,6 +1930,8 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) > > class->size = size; > > class->index = i; > > class->pa...
2016 Mar 30
0
[PATCH v3 06/16] zsmalloc: squeeze inuse into page->mapping
...*class, int inuse, objs_per_zspage; enum fullness_group fg; - VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); - - inuse = first_page->inuse; + inuse = get_zspage_inuse(first_page); objs_per_zspage = class->objs_per_zspage; if (inuse == 0) @@ -677,10 +711,10 @@ static void insert_zspage(struct size_class *class, /* * We want to see more ZS_FULL pages and less almost - * empty/full. Put pages with higher ->inuse first. + * empty/full. Put pages with higher inuse first. */ list_add_tail(&first_page->lru, &(*head)->lru); - if (first_page->inuse >=...
2016 Mar 21
0
[PATCH v2 17/18] zsmalloc: migrate tail pages in zspage
...llness_group putback_zspage(struct size_class *class, VM_BUG_ON_PAGE(!list_empty(&first_page->lru), first_page); VM_BUG_ON_PAGE(ZsPageIsolate(first_page), first_page); + VM_BUG_ON_PAGE(check_isolated_page(first_page), first_page); fullness = get_fullness_group(class, first_page); insert_zspage(class, fullness, first_page); @@ -1956,6 +2009,12 @@ static struct page *isolate_source_page(struct size_class *class) if (!page) continue; + /* To prevent race between object and page migration */ + if (!trylock_zspage(page, NULL)) { + page = NULL; + continue; + } + remove_zspag...
2016 Mar 21
2
[PATCH v2 17/18] zsmalloc: migrate tail pages in zspage
Hi Minchan, [auto build test WARNING on next-20160318] [cannot apply to v4.5-rc7 v4.5-rc6 v4.5-rc5 v4.5] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Minchan-Kim/Support-non-lru-page-migration/20160321-143339 coccinelle warnings: (new ones prefixed by >>) >>
2016 Mar 21
2
[PATCH v2 17/18] zsmalloc: migrate tail pages in zspage
Hi Minchan, [auto build test WARNING on next-20160318] [cannot apply to v4.5-rc7 v4.5-rc6 v4.5-rc5 v4.5] [if your patch is applied to the wrong git tree, please drop us a note to help improving the system] url: https://github.com/0day-ci/linux/commits/Minchan-Kim/Support-non-lru-page-migration/20160321-143339 coccinelle warnings: (new ones prefixed by >>) >>
2016 Mar 30
33
[PATCH v3 00/16] 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 failed to fork easily. The problem was fragmentation caused by zram and GPU driver pages. Their pages cannot be migrated so compaction cannot work well, either so reclaimer ends up shrinking all of working set pages. It made system very slow and even to fail to fork easily.
2016 Mar 30
33
[PATCH v3 00/16] 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 failed to fork easily. The problem was fragmentation caused by zram and GPU driver pages. Their pages cannot be migrated so compaction cannot work well, either so reclaimer ends up shrinking all of working set pages. It made system very slow and even to fail to fork easily.