search for: set_freeobj

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

2016 Mar 12
1
[PATCH v1 13/19] zsmalloc: factor page chain functionality out
...> + first_page->freelist = NULL; > + INIT_LIST_HEAD(&first_page->lru); > + set_zspage_inuse(first_page, 0); > > while (page) { > struct page *next_page; > @@ -1022,13 +1024,44 @@ static void init_zspage(struct size_class *class, struct page *first_page) > set_freeobj(first_page, 0); > } > > +static void create_page_chain(struct page *pages[], int nr_pages) > +{ > + int i; > + struct page *page; > + struct page *prev_page = NULL; > + struct page *first_page = NULL; > + > + for (i = 0; i < nr_pages; i++) { > + page = pages[i...
2016 Mar 12
1
[PATCH v1 13/19] zsmalloc: factor page chain functionality out
...> + first_page->freelist = NULL; > + INIT_LIST_HEAD(&first_page->lru); > + set_zspage_inuse(first_page, 0); > > while (page) { > struct page *next_page; > @@ -1022,13 +1024,44 @@ static void init_zspage(struct size_class *class, struct page *first_page) > set_freeobj(first_page, 0); > } > > +static void create_page_chain(struct page *pages[], int nr_pages) > +{ > + int i; > + struct page *page; > + struct page *prev_page = NULL; > + struct page *first_page = NULL; > + > + for (i = 0; i < nr_pages; i++) { > + page = pages[i...
2016 Mar 30
0
[PATCH v3 08/16] zsmalloc: squeeze freelist into page->mapping
...ool { }; struct zs_meta { + unsigned long freeobj:FREEOBJ_BITS; unsigned long class:CLASS_BITS; unsigned long fullness:FULLNESS_BITS; unsigned long inuse:INUSE_BITS; @@ -446,6 +443,26 @@ static void mod_zspage_inuse(struct page *first_page, int val) m->inuse += val; } +static void set_freeobj(struct page *first_page, int idx) +{ + struct zs_meta *m; + + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); + + m = (struct zs_meta *)&first_page->mapping; + m->freeobj = idx; +} + +static unsigned long get_freeobj(struct page *first_page) +{ + struct zs_meta *m; + + VM_BUG_ON_P...
2016 Mar 11
0
[PATCH v1 11/19] zsmalloc: squeeze freelist into page->mapping
...ool { }; struct zs_meta { + unsigned long freeobj:FREEOBJ_BITS; unsigned long class:CLASS_BITS; unsigned long fullness:FULLNESS_BITS; unsigned long inuse:INUSE_BITS; @@ -447,6 +444,26 @@ static void mod_zspage_inuse(struct page *first_page, int val) m->inuse += val; } +static void set_freeobj(struct page *first_page, int idx) +{ + struct zs_meta *m; + + VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); + + m = (struct zs_meta *)&first_page->mapping; + m->freeobj = idx; +} + +static unsigned long get_freeobj(struct page *first_page) +{ + struct zs_meta *m; + + VM_BUG_ON_P...
2016 Apr 18
1
[PATCH v3 10/16] zsmalloc: factor page chain functionality out
...ATED_TAG assignment with 2 'handle | OBJ_ALLOCATED_TAG'? -ss > obj = get_freeobj(first_page); > objidx_to_page_and_offset(class, first_page, obj, > &m_page, &m_offset); > @@ -1431,10 +1443,10 @@ static unsigned long obj_malloc(struct size_class *class, > set_freeobj(first_page, link->next >> OBJ_ALLOCATED_TAG); > if (!class->huge) > /* record handle in the header of allocated chunk */ > - link->handle = handle; > + link->handle = handle | OBJ_ALLOCATED_TAG; > else > /* record handle in first_page->private */ &...
2016 Apr 18
1
[PATCH v3 10/16] zsmalloc: factor page chain functionality out
...ATED_TAG assignment with 2 'handle | OBJ_ALLOCATED_TAG'? -ss > obj = get_freeobj(first_page); > objidx_to_page_and_offset(class, first_page, obj, > &m_page, &m_offset); > @@ -1431,10 +1443,10 @@ static unsigned long obj_malloc(struct size_class *class, > set_freeobj(first_page, link->next >> OBJ_ALLOCATED_TAG); > if (!class->huge) > /* record handle in the header of allocated chunk */ > - link->handle = handle; > + link->handle = handle | OBJ_ALLOCATED_TAG; > else > /* record handle in first_page->private */ &...
2016 Mar 11
0
[PATCH v1 13/19] zsmalloc: factor page chain functionality out
...!is_first_page(first_page), first_page); + first_page->freelist = NULL; + INIT_LIST_HEAD(&first_page->lru); + set_zspage_inuse(first_page, 0); while (page) { struct page *next_page; @@ -1022,13 +1024,44 @@ static void init_zspage(struct size_class *class, struct page *first_page) set_freeobj(first_page, 0); } +static void create_page_chain(struct page *pages[], int nr_pages) +{ + int i; + struct page *page; + struct page *prev_page = NULL; + struct page *first_page = NULL; + + for (i = 0; i < nr_pages; i++) { + page = pages[i]; + + INIT_LIST_HEAD(&page->lru); + if (i ==...
2016 Mar 30
0
[PATCH v3 10/16] zsmalloc: factor page chain functionality out
...!is_first_page(first_page), first_page); + first_page->freelist = NULL; + INIT_LIST_HEAD(&first_page->lru); + set_zspage_inuse(first_page, 0); while (page) { struct page *next_page; @@ -1026,13 +1028,44 @@ static void init_zspage(struct size_class *class, struct page *first_page) set_freeobj(first_page, 0); } +static void create_page_chain(struct page *pages[], int nr_pages) +{ + int i; + struct page *page; + struct page *prev_page = NULL; + struct page *first_page = NULL; + + for (i = 0; i < nr_pages; i++) { + page = pages[i]; + + INIT_LIST_HEAD(&page->lru); + if (i ==...
2016 Mar 14
0
[PATCH v1 13/19] zsmalloc: factor page chain functionality out
...t = NULL; > >+ INIT_LIST_HEAD(&first_page->lru); > >+ set_zspage_inuse(first_page, 0); > > > > while (page) { > > struct page *next_page; > >@@ -1022,13 +1024,44 @@ static void init_zspage(struct size_class *class, struct page *first_page) > > set_freeobj(first_page, 0); > > } > > > >+static void create_page_chain(struct page *pages[], int nr_pages) > >+{ > >+ int i; > >+ struct page *page; > >+ struct page *prev_page = NULL; > >+ struct page *first_page = NULL; > >+ > >+ for (i = 0; i &lt...
2016 Mar 30
0
[PATCH v3 09/16] zsmalloc: move struct zs_meta from mapping to freelist
...439,7 @@ static void mod_zspage_inuse(struct page *first_page, int val) VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); - m = (struct zs_meta *)&first_page->mapping; + m = (struct zs_meta *)&first_page->freelist; m->inuse += val; } @@ -449,7 +449,7 @@ static void set_freeobj(struct page *first_page, int idx) VM_BUG_ON_PAGE(!is_first_page(first_page), first_page); - m = (struct zs_meta *)&first_page->mapping; + m = (struct zs_meta *)&first_page->freelist; m->freeobj = idx; } @@ -459,7 +459,7 @@ static unsigned long get_freeobj(struct page *fi...
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
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
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.