Re: Memory is not becoming available even after freeing it.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 14, 2010 at 10:18 AM, Manish Katiyar <mkatiyar@xxxxxxxxx> wrote:
> On Wed, Apr 14, 2010 at 8:04 PM, Vikash Kumar <vikashskumar@xxxxxxxxx> wrote:
>> Hi everyone,
>>
>> I am writing a simple memory manager for my application which will
>> free any excess memory being used by my modules, so that it's
>> available again for use. My modules allocate memory using alloc_page &
>> kmem_cache_alloc and so the memory manager uses put_page &
>> kmem_cache_free respectively to free up the memory which is not in
>> use.
>>
>> The problem I am facing is, even after I free the memory using
>> put_page & kmem_cache_free, my modules are not able to get the free
>> memory. I have written a test code which allocates a lot of memory in
>> loop and when out of memory sleeps on memory manager to free up the
>> memory. Memory manager successfully executes free code and wakes up
>> the sleeping process as memory should be available now. Interestingly
>> the alloc_page /  kmem_cache_alloc calls still fail to allocate
>> memory. Now, I am clueless why it is happening so seeking help.
>
> Random guess... Are you sure it is still free between your free and
> allocate. ie.. no one else comes in between takes away your memory ?
>
> Thanks -
> Manish
>
>

Slab allocator does not just free the pages when u call
kmem_cache_free. It has a list of empty, partial and full slabs. So if
yo free it will just be in free list. have you called
kmem_cache_destroy to destroy the whole cache?
correct me if i am wrong here.


---------------------------------------------------------------
regards
Manish Regmi

http://manish-cs.blogspot.com
http://ext2read.sf.net

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux