[OpenAFS-devel] How can the mem cache possibly not be able to allocate memory?

Neulinger, Nathan nneul@umr.edu
Mon, 12 Apr 2004 11:11:49 -0500


As a note - from taking a look at some of the linux kernel discussions,
it looks like kmalloc can be used for up to 32*pagesize bytes (128k)...
any idea why our threshold is set to just 1 page?

-- Nathan

------------------------------------------------------------
Nathan Neulinger                       EMail:  nneul@umr.edu
University of Missouri - Rolla         Phone: (573) 341-6679
UMR Information Technology             Fax: (573) 341-4216
=20

> -----Original Message-----
> From: Neulinger, Nathan=20
> Sent: Monday, April 12, 2004 11:02 AM
> Cc: 'openafs-devel@openafs.org'
> Subject: RE: [OpenAFS-devel] How can the mem cache possibly=20
> not be able to allocate memory?=20
>=20
> AFS osi_alloc appears to be thresholding at MAX_KMALLOC_SIZE.=20
> If <=3D, it uses kmalloc, otherwise vmalloc. MAX_KMALLOC_SIZE=20
> is set to PAGE_SIZE.
>=20
> -- Nathan
>=20
> ------------------------------------------------------------
> Nathan Neulinger                       EMail:  nneul@umr.edu
> University of Missouri - Rolla         Phone: (573) 341-6679
> UMR Information Technology             Fax: (573) 341-4216
> =20
>=20
> > -----Original Message-----
> > From: chas williams (contractor) [mailto:chas@cmf.nrl.navy.mil]=20
> > Sent: Wednesday, April 07, 2004 10:01 PM
> > To: Neulinger, Nathan
> > Cc: openafs-devel@openafs.org
> > Subject: Re: [OpenAFS-devel] How can the mem cache possibly=20
> > not be able to allocate memory?=20
> >=20
> > In message <20040408014851.GA10203@umr.edu>,Nathan Neulinger writes:
> > >Apr  7 13:27:51 nic1 kernel: Memory: 4008596k/4194304k=20
> > available (2244k
> > >kernel code, 53668k reserved, 1432k data, 168k init,=20
> > 3145152k highmem)
> > >
> > >That just plain doesn't make any sense... I tried to give it a 75MB
> > >memcache... Is there something with how afs is trying to=20
> > allocate kernel
> > >memory that would limit what it could use?=20
> >=20
> > well the linux kernel could be placing a limit on memory.  i=20
> > would have
> > to guess that afs_osi_Alloc(memCacheBlkSize) is going to=20
> > using kmalloc()
> > instead of vmalloc().  kmalloc() gets its buffer from various pools
> > viewable from /proc/slabinfo (in particular the size-NNNN=20
> pools).  it
> > seems like you might be hitting a limit on the number of buffers.
> >=20
> > perhaps memcache should be implemented to have it own kmem_cache.
> >=20
> >=20