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

chas williams (contractor) chas@cmf.nrl.navy.mil
Mon, 12 Apr 2004 12:30:07 -0400


typically the only reason to use kmalloc() for regions greater than a
single page is that you need the region to be continguous in physical
memory.  for instance, a bounce buffer for some hardware.

really afs could just use vmalloc() for everything i suspect.

In message <5C51DC2B8353AB4BA2CD04B34F2EE79C3EFE8D@umr-umail1.umr.edu>,"Neulinger, Nathan" writes:
>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
> 
>
>> -----Original Message-----
>> From: Neulinger, Nathan 
>> Sent: Monday, April 12, 2004 11:02 AM
>> Cc: 'openafs-devel@openafs.org'
>> Subject: RE: [OpenAFS-devel] How can the mem cache possibly 
>> not be able to allocate memory? 
>> 
>> AFS osi_alloc appears to be thresholding at MAX_KMALLOC_SIZE. 
>> If <=, it uses kmalloc, otherwise vmalloc. MAX_KMALLOC_SIZE 
>> is set to PAGE_SIZE.
>> 
>> -- Nathan
>> 
>> ------------------------------------------------------------
>> Nathan Neulinger                       EMail:  nneul@umr.edu
>> University of Missouri - Rolla         Phone: (573) 341-6679
>> UMR Information Technology             Fax: (573) 341-4216
>>  
>> 
>> > -----Original Message-----
>> > From: chas williams (contractor) [mailto:chas@cmf.nrl.navy.mil] 
>> > 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 
>> > not be able to allocate memory? 
>> > 
>> > In message <20040408014851.GA10203@umr.edu>,Nathan Neulinger writes:
>> > >Apr  7 13:27:51 nic1 kernel: Memory: 4008596k/4194304k 
>> > available (2244k
>> > >kernel code, 53668k reserved, 1432k data, 168k init, 
>> > 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 
>> > allocate kernel
>> > >memory that would limit what it could use? 
>> > 
>> > well the linux kernel could be placing a limit on memory.  i 
>> > would have
>> > to guess that afs_osi_Alloc(memCacheBlkSize) is going to 
>> > using kmalloc()
>> > instead of vmalloc().  kmalloc() gets its buffer from various pools
>> > viewable from /proc/slabinfo (in particular the size-NNNN 
>> pools).  it
>> > seems like you might be hitting a limit on the number of buffers.
>> > 
>> > perhaps memcache should be implemented to have it own kmem_cache.
>> > 
>> > 
>_______________________________________________
>OpenAFS-devel mailing list
>OpenAFS-devel@openafs.org
>https://lists.openafs.org/mailman/listinfo/openafs-devel
>
>