Sergey Senozhatsky
2016-Mar-15 06:28 UTC
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
On (03/11/16 16:30), Minchan Kim wrote:> Every zspage in a size_class has same number of max objects so > we could move it to a size_class. > > Signed-off-by: Minchan Kim <minchan at kernel.org> > --- > mm/zsmalloc.c | 29 ++++++++++++++--------------- > 1 file changed, 14 insertions(+), 15 deletions(-) > > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > index b4fb11831acb..ca663c82c1fc 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -32,8 +32,6 @@ > * page->freelist: points to the first free object in zspage. > * Free objects are linked together using in-place > * metadata. > - * page->objects: maximum number of objects we can store in this > - * zspage (class->zspage_order * PAGE_SIZE / class->size) > * page->lru: links together first pages of various zspages. > * Basically forming 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 page ->objects "comes for free". now we don't use it, instead every size_class grows by 4 bytes? is there any reason for this? -ss
Minchan Kim
2016-Mar-15 06:41 UTC
[PATCH v1 09/19] zsmalloc: keep max_object in size_class
On Tue, Mar 15, 2016 at 03:28:24PM +0900, Sergey Senozhatsky wrote:> On (03/11/16 16:30), Minchan Kim wrote: > > Every zspage in a size_class has same number of max objects so > > we could move it to a size_class. > > > > Signed-off-by: Minchan Kim <minchan at kernel.org> > > --- > > mm/zsmalloc.c | 29 ++++++++++++++--------------- > > 1 file changed, 14 insertions(+), 15 deletions(-) > > > > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > > index b4fb11831acb..ca663c82c1fc 100644 > > --- a/mm/zsmalloc.c > > +++ b/mm/zsmalloc.c > > @@ -32,8 +32,6 @@ > > * page->freelist: points to the first free object in zspage. > > * Free objects are linked together using in-place > > * metadata. > > - * page->objects: maximum number of objects we can store in this > > - * zspage (class->zspage_order * PAGE_SIZE / class->size) > > * page->lru: links together first pages of various zspages. > > * Basically forming 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 page ->objects "comes for free". now we don't use it, instead > every size_class grows by 4 bytes? is there any reason for this?It is union with _mapcount and it is used by checking non-lru movable page in this patchset.> > -ss
Apparently Analagous Threads
- [PATCH v1 09/19] zsmalloc: keep max_object in size_class
- [PATCH v1 09/19] zsmalloc: keep max_object in size_class
- [PATCH v1 09/19] zsmalloc: keep max_object in size_class
- [PATCH v1 09/19] zsmalloc: keep max_object in size_class
- [PATCH v1 09/19] zsmalloc: keep max_object in size_class