hi folks,
as kmalloc allocates memory in power of 2 ( starting from 32 )
instead of the size requested. there are following problems :
1) we are allocating at least 32 bytes in all cases ( most of
the times it is not
required ).
2) if we allocate large memory, internal fregmentation also
increases.
3) allocating more memory then the request often leads to
programming errors
esp. when we store some data and read it back or try to get size
of data stored
( though it can be handled but we have to take special care of
it at every point ).
the solution to above problems may be that we dont allocate
objects from the 13
general purpose caches, instead we make a new cache keep its
address either in
cache_sizes or declare it global. now as the kmalloc is invoked
check the memory size
requested if predefined sizes are not suitable then make a new
object of the size
requested ( now here the definition of c_offset flag of cache
descriptor may be
violated ) and allot it to our new cache and return it .
i know that there may be subtle problems in it's
implementation.
i need your suggestions. is it worth to make efforts in this
field.
keenly waitinf for ur reply
tushar korde
_________________________________________________________
Click below to visit monsterindia.com and review jobs in India or
Abroad
http://monsterindia.rediff.com/jobs
On Saturday 08 June 2002 23:35, tushar korde wrote:
> hi folks,
> as kmalloc allocates memory in power of 2 ( starting from 32 )
> instead of the size requested. there are following problems :
>
> 1) we are allocating at least 32 bytes in all cases ( most of
> the times it is not
> required ).
>
> 2) if we allocate large memory, internal fregmentation also
> increases.
>
> 3) allocating more memory then the request often leads to
> programming errors
> esp. when we store some data and read it back or try to get size
> of data stored
> ( though it can be handled but we have to take special care of
> it at every point ).
>
> the solution to above problems may be that we dont allocate
> objects from the 13
> general purpose caches, instead we make a new cache keep its
> address either in
> cache_sizes or declare it global. now as the kmalloc is invoked
> check the memory size
> requested if predefined sizes are not suitable then make a new
> object of the size
> requested ( now here the definition of c_offset flag of cache
> descriptor may be
> violated ) and allot it to our new cache and return it .
>
> i know that there may be subtle problems in it's
> implementation.
> i need your suggestions. is it worth to make efforts in this
> field.
You probably want kmem_cache_alloc, see slab.c. Kmalloc is just an
interface to kmem_cache_alloc.
--
Daniel