search for: fullness_group

Displaying 20 results from an estimated 23 matches for "fullness_group".

2016 Mar 11
0
[PATCH v1 05/19] zsmalloc: use first_page rather than page
...alloc.c +++ b/mm/zsmalloc.c @@ -414,26 +414,28 @@ static int is_last_page(struct page *page) return PagePrivate2(page); } -static void get_zspage_mapping(struct page *page, unsigned int *class_idx, +static void get_zspage_mapping(struct page *first_page, + unsigned int *class_idx, enum fullness_group *fullness) { unsigned long m; - BUG_ON(!is_first_page(page)); + BUG_ON(!is_first_page(first_page)); - m = (unsigned long)page->mapping; + m = (unsigned long)first_page->mapping; *fullness = m & FULLNESS_MASK; *class_idx = (m >> FULLNESS_BITS) & CLASS_IDX_MASK; } -sta...
2016 Mar 12
1
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...age; > 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 page *first_page) > { > - int inuse, max_objects; > + int inuse, objs_per_zspage; > enum fullness_group fg; > > VM_BUG_ON_PAGE(!is_f...
2016 Mar 12
1
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...age; > 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 page *first_page) > { > - int inuse, max_objects; > + int inuse, objs_per_zspage; > enum fullness_group fg; > > VM_BUG_ON_PAGE(!is_f...
2016 Mar 11
0
[PATCH v1 07/19] zsmalloc: reordering function parameter
...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) +static inline int zs_pool_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_...
2016 Mar 11
0
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...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 page *first_page) { - int inuse, max_objects; + int inuse, objs_per_zspage; enum fullness_group fg; VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); i...
2016 Mar 30
0
[PATCH v3 05/16] zsmalloc: keep max_object in size_class
...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 page *first_page) { - int inuse, max_objects; + int inuse, objs_per_zspage; enum fullness_group fg; VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); i...
2016 Mar 14
0
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
...ex; > > > > 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 page *first_page) > > { > >- int inuse, max_objects; > >+ int inuse, objs_per_zspage; > > enum fullness_group fg; > >...
2016 Mar 11
0
[PATCH v1 06/19] zsmalloc: clean up many BUG_ON
...+++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index bb29203ec6b3..3c82011cc405 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -419,7 +419,7 @@ static void get_zspage_mapping(struct page *first_page, enum fullness_group *fullness) { unsigned long m; - BUG_ON(!is_first_page(first_page)); + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); m = (unsigned long)first_page->mapping; *fullness = m & FULLNESS_MASK; @@ -431,7 +431,7 @@ static void set_zspage_mapping(struct page *first_page, enum...
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 30
0
[PATCH v3 11/16] zsmalloc: separate free_zspage from putback_zspage
...per_zspage)); + atomic_long_sub(class->pages_per_zspage, + &pool->pages_allocated); } /* Initialize a newly allocated zspage */ @@ -1559,13 +1565,8 @@ void zs_free(struct zs_pool *pool, unsigned long handle) spin_lock(&class->lock); obj_free(class, obj); fullness = fix_fullness_group(class, first_page); - 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->pages_allocated); - free_zspage(first_page); - } + if (fullness == ZS_E...
2016 Apr 17
1
[PATCH v3 06/16] zsmalloc: squeeze inuse into page->mapping
..._page, int val) > +{ > + struct zs_meta *m; > + > + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); > + > + m = (struct zs_meta *)&first_page->mapping; .. > static void get_zspage_mapping(struct page *first_page, > unsigned int *class_idx, > enum fullness_group *fullness) > { > - unsigned long m; > + struct zs_meta *m; > + > VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); > + m = (struct zs_meta *)&first_page->mapping; .. > static void set_zspage_mapping(struct page *first_page, > unsigned int class_idx, &gt...
2016 Apr 17
1
[PATCH v3 06/16] zsmalloc: squeeze inuse into page->mapping
..._page, int val) > +{ > + struct zs_meta *m; > + > + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); > + > + m = (struct zs_meta *)&first_page->mapping; .. > static void get_zspage_mapping(struct page *first_page, > unsigned int *class_idx, > enum fullness_group *fullness) > { > - unsigned long m; > + struct zs_meta *m; > + > VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); > + m = (struct zs_meta *)&first_page->mapping; .. > static void set_zspage_mapping(struct page *first_page, > unsigned int class_idx, &gt...
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 30
0
[PATCH v3 06/16] zsmalloc: squeeze inuse into page->mapping
...ALLOC_SIZE and ZS_SIZE_CLASS_DELTA must be multiple of ZS_ALIGN * (reason above) */ -#define ZS_SIZE_CLASS_DELTA (PAGE_SIZE >> 8) +#define ZS_SIZE_CLASS_DELTA (PAGE_SIZE >> CLASS_BITS) /* * We do not maintain any list for completely empty or full pages @@ -155,7 +161,7 @@ enum fullness_group { ZS_ALMOST_EMPTY, _ZS_NR_FULLNESS_GROUPS, - ZS_EMPTY, + ZS_EMPTY = _ZS_NR_FULLNESS_GROUPS, ZS_FULL }; @@ -263,14 +269,11 @@ struct zs_pool { #endif }; -/* - * A zspage's class index and fullness group - * are encoded in its (first)page->mapping - */ -#define CLASS_IDX_BITS 28...
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 *next_page; struct link_free *link; void *vaddr; + BUG_ON(!trylock_page(page)); + page->mapping = mapping; + __SetPageMovable(page); + unlock_page(page); + vaddr = kmap_atomic(page); link = (struct link_free *)vaddr + off / sizeof(*link); @@ -1850,6 +1902,7 @@ static enum fullness_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_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 >>) >>