lkml.org 
[lkml]   [2015]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v3 2/2] zram: try vmalloc() after kmalloc()
On (12/01/15 13:55), Minchan Kim wrote:
[..]
> To clear my opinion,
>
> lzo_create(gfp_t flags)
> {
> void * ret = kmalloc(LZO1X_MEM_COMPRESS, flags);
> if (!ret)
> ret = vmalloc(LZO1X_MEM_COMPRESS, flasgs | GFP_NOMEMALLOC);
> return ret;
> }

ah, ok, I see. I've a question.

we had
kmalloc(f | __GFP_NOMEMALLOC)
__vmalloc(f | __GFP_NOMEMALLOC)

which produced high failure rates for both kmalloc() and __vmalloc()

test #1

> > > log message :
[..]
> > > [ 352.230608][0] zcomp_lz4_create: 32: ret = (null)
> > > [ 352.230619][0] zcomp_lz4_create: 38: ret = (null)
> > > [ 352.230888][0] zcomp_lz4_create: 32: ret = (null)
> > > [ 352.230902][0] zcomp_lz4_create: 38: ret = (null)
> > > [ 352.231406][0] zcomp_lz4_create: 32: ret = ffffffc002088000
> > > [ 352.234024][0] zcomp_lz4_create: 32: ret = (null)
> > > [ 352.234060][0] zcomp_lz4_create: 38: ret = (null)
> > > [ 352.234359][0] zcomp_lz4_create: 32: ret = (null)
[..]
> > > [ 352.234384][0] zcomp_lz4_create: 38: ret = (null)
> > > [ 352.234618][0] zcomp_lz4_create: 32: ret = (null)
> > > [ 352.234639][0] zcomp_lz4_create: 38: ret = (null)
> > > [ 352.234667][0] zcomp_lz4_create: 32: ret = (null)
> > > [ 352.235179][0] zcomp_lz4_create: 38: ret = ffffff80016a4000



Kyeongdon, do I understand correctly, that for the second test you
removed '__GFP_NOMEMALLOC' from both kmalloc() and __vmalloc()?

iow:
kmalloc(f & ~__GFP_NOMEMALLOC)
vmalloc(f & ~__GFP_NOMEMALLOC)

test #2 : almost always failing kmalloc() and !NULL __vmalloc()

> > > log message :
> > > <4>[ 2288.954934][0] KDKIM: zcomp_lz4_create: 24: ret = (null)
> > > <4>[ 2288.954972][0] KDKIM: zcomp_lz4_create: 30: ret = ffffff800287e000
> > > ..<snip>..
> > > <4>[ 2289.092411][0] KDKIM: zcomp_lz4_create: 24: ret = (null)
> > > <4>[ 2289.092546][0] KDKIM: zcomp_lz4_create: 30: ret = ffffff80028b5000
> > > ..<snip>..
> > > <4>[ 2289.135628][0] KDKIM: zcomp_lz4_create: 24: ret = (null)
> > > <4>[ 2289.135642][0] KDKIM: zcomp_lz4_create: 24: ret = (null)
> > > <4>[ 2289.135729][0] KDKIM: zcomp_lz4_create: 30: ret = ffffff80028be000
> > > <4>[ 2289.135732][0] KDKIM: zcomp_lz4_create: 30: ret = ffffff80028c7000


if this is the case (__GFP_NOMEMALLOC removed from both kmalloc and __vmalloc),
then proposed

kmalloc(f & ~__GFP_NOMEMALLOC)
__vmalloc(f | __GFP_NOMEMALLOC)


can be very close to 'test #1 && test #2':

kmalloc() fails (as in test #2)
__vmalloc() fails (as in test #1)

isn't it?

-ss


\
 
 \ /
  Last update: 2015-12-01 06:41    [W:0.072 / U:0.228 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site