search for: zs_pool

Displaying 20 results from an estimated 27 matches for "zs_pool".

2016 Mar 11
0
[PATCH v1 07/19] zsmalloc: reordering function parameter
...e changed, 26 insertions(+), 24 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 3c82011cc405..156edf909046 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -564,7 +564,7 @@ static const struct file_operations zs_stat_size_ops = { .release = single_release, }; -static int zs_pool_stat_create(const char *name, struct zs_pool *pool) +static int zs_pool_stat_create(struct zs_pool *pool, const char *name) { struct dentry *entry; @@ -604,7 +604,7 @@ static void __exit zs_stat_exit(void) { } -static inline int zs_pool_stat_create(const char *name, struct zs_pool *pool) +...
2016 Mar 12
1
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...->mapping: class index and fullness group of the zspage > @@ -211,6 +209,7 @@ struct size_class { > * of ZS_ALIGN. > */ > int size; > + int objs_per_zspage; > unsigned int index; > > struct zs_size_stat stats; > @@ -622,21 +621,22 @@ static inline void zs_pool_stat_destroy(struct zs_pool *pool) > * the pool (not yet implemented). This function returns fullness > * status of the given page. > */ > -static enum fullness_group get_fullness_group(struct page *first_page) > +static enum fullness_group get_fullness_group(struct size_cla...
2016 Mar 12
1
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...->mapping: class index and fullness group of the zspage > @@ -211,6 +209,7 @@ struct size_class { > * of ZS_ALIGN. > */ > int size; > + int objs_per_zspage; > unsigned int index; > > struct zs_size_stat stats; > @@ -622,21 +621,22 @@ static inline void zs_pool_stat_destroy(struct zs_pool *pool) > * the pool (not yet implemented). This function returns fullness > * status of the given page. > */ > -static enum fullness_group get_fullness_group(struct page *first_page) > +static enum fullness_group get_fullness_group(struct size_cla...
2016 Mar 30
0
[PATCH v3 11/16] zsmalloc: separate free_zspage from putback_zspage
...diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 14bcc741eead..b11dcd718502 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -949,7 +949,8 @@ static void reset_page(struct page *page) page->freelist = NULL; } -static void free_zspage(struct page *first_page) +static void free_zspage(struct zs_pool *pool, struct size_class *class, + struct page *first_page) { struct page *nextp, *tmp, *head_extra; @@ -972,6 +973,11 @@ static void free_zspage(struct page *first_page) } reset_page(head_extra); __free_page(head_extra); + + zs_stat_dec(class, OBJ_ALLOCATED, get_maxobj_per_zspage( +...
2016 Mar 11
0
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...ng list of zspages in a fullness group. * page->mapping: class index and fullness group of the zspage @@ -211,6 +209,7 @@ struct size_class { * of ZS_ALIGN. */ int size; + int objs_per_zspage; unsigned int index; struct zs_size_stat stats; @@ -622,21 +621,22 @@ static inline void zs_pool_stat_destroy(struct zs_pool *pool) * the pool (not yet implemented). This function returns fullness * status of the given page. */ -static enum fullness_group get_fullness_group(struct page *first_page) +static enum fullness_group get_fullness_group(struct size_class *class, + struct pag...
2016 Mar 30
0
[PATCH v3 05/16] zsmalloc: keep max_object in size_class
...ng list of zspages in a fullness group. * page->mapping: class index and fullness group of the zspage @@ -211,6 +209,7 @@ struct size_class { * of ZS_ALIGN. */ int size; + int objs_per_zspage; unsigned int index; struct zs_size_stat stats; @@ -627,21 +626,22 @@ static inline void zs_pool_stat_destroy(struct zs_pool *pool) * the pool (not yet implemented). This function returns fullness * status of the given page. */ -static enum fullness_group get_fullness_group(struct page *first_page) +static enum fullness_group get_fullness_group(struct size_class *class, + struct pag...
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 14
0
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...s group of the zspage > >@@ -211,6 +209,7 @@ struct size_class { > > * of ZS_ALIGN. > > */ > > int size; > >+ int objs_per_zspage; > > unsigned int index; > > > > struct zs_size_stat stats; > >@@ -622,21 +621,22 @@ static inline void zs_pool_stat_destroy(struct zs_pool *pool) > > * the pool (not yet implemented). This function returns fullness > > * status of the given page. > > */ > >-static enum fullness_group get_fullness_group(struct page *first_page) > >+static enum fullness_group get_fullness_g...
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 11
0
[PATCH v1 08/19] zsmalloc: remove unused pool param in obj_free
...Minchan Kim <minchan at kernel.org> --- mm/zsmalloc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 156edf909046..b4fb11831acb 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -1435,8 +1435,7 @@ unsigned long zs_malloc(struct zs_pool *pool, size_t size) } EXPORT_SYMBOL_GPL(zs_malloc); -static void obj_free(struct zs_pool *pool, struct size_class *class, - unsigned long obj) +static void obj_free(struct size_class *class, unsigned long obj) { struct link_free *link; struct page *first_page, *f_page; @@ -1482,7 +1481,7...
2016 Mar 11
0
[PATCH v1 06/19] zsmalloc: clean up many BUG_ON
...ev, int size, int pages_per_zspage) static bool zspage_full(struct page *first_page) { - BUG_ON(!is_first_page(first_page)); + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); return first_page->inuse == first_page->objects; } @@ -1273,14 +1273,12 @@ void *zs_map_object(struct zs_pool *pool, unsigned long handle, struct page *pages[2]; void *ret; - BUG_ON(!handle); - /* * Because we use per-cpu mapping areas shared among the * pools/users, we can't allow mapping in interrupt context * because it can corrupt another users mappings. */ - BUG_ON(in_interrupt...
2016 Mar 11
0
[PATCH v1 19/19] zram: use __GFP_MOVABLE for memory allocation
...|__GFP_MOVABLE); if (!meta->mem_pool) { pr_err("Error creating memory pool\n"); goto out_error; diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index b9ff698115a1..a1f47a7b3a99 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -307,7 +307,7 @@ static void destroy_handle_cache(struct zs_pool *pool) static unsigned long alloc_handle(struct zs_pool *pool) { return (unsigned long)kmem_cache_alloc(pool->handle_cachep, - pool->flags & ~__GFP_HIGHMEM); + pool->flags & ~(__GFP_HIGHMEM|__GFP_MOVABLE)); } static void free_handle(struct zs_pool *pool, unsigned long han...
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.
2016 Mar 21
0
[PATCH v2 17/18] zsmalloc: migrate tail pages in zspage
...age(struct page *first_page, struct page *locked_page) +{ + struct page *cursor = first_page; + + for (; cursor != NULL; cursor = get_next_page(cursor)) { + VM_BUG_ON_PAGE(!PageLocked(cursor), cursor); + if (cursor != locked_page) + unlock_page(cursor); + }; +} + static void free_zspage(struct zs_pool *pool, struct page *first_page) { struct page *nextp, *tmp; @@ -1090,16 +1141,17 @@ static void init_zspage(struct size_class *class, struct page *first_page, first_page->freelist = NULL; INIT_LIST_HEAD(&first_page->lru); set_zspage_inuse(first_page, 0); - BUG_ON(!trylock_page(fi...
2016 Apr 18
2
[PATCH v3 11/16] zsmalloc: separate free_zspage from putback_zspage
Hello Minchan, On (03/30/16 16:12), Minchan Kim wrote: [..] > @@ -1835,23 +1827,31 @@ static void __zs_compact(struct zs_pool *pool, struct size_class *class) > if (!migrate_zspage(pool, class, &cc)) > break; > > - putback_zspage(pool, class, dst_page); > + VM_BUG_ON_PAGE(putback_zspage(pool, class, > + dst_page) == ZS_EMPTY, dst_page); can this VM_BUG_ON_PAGE() condition ever be t...