On Sat, Oct 15, 2011 at 9:31 AM, Mulyadi Santosa <mulyadi.santosa@gmail.com>wrote:
Hi.... :)
On Fri, Oct 14, 2011 at 16:15, pankaj singh <psingh.ait@gmail.com> wrote:
Nice doc ...:)
On Fri, Oct 14, 2011 at 10:28 AM, rohan puri <rohan.puri15@gmail.com> wrote:
Reference to an article by Mulayadi Santosa :-
http://linuxdevcenter.com/pub/a/linux/2006/11/30/linux-out-of-memory.html
AWESOME ARTICLE SIR :)
Thank you, thank you very much for your appreciation :) I just hope, besides getting adequate money, you all got something meaningful from that article. And I believe, as long as there are people who have same concerned, that article will be refined over and over and overall will be better through the time :)
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi, It's really a fabulous article. Many many thanks to Mulyadi for such a great article and thank for Rohan for sharing the link. I read the article and correlate contents with my current issue. Here are my observations. Do please correct me if I'm wrong at any point. The leak which I was observed in my program is due to big memory buffers of size 5MB allocation from heap.I've 6 such character buffers. So as per below lines from the article memory should be allocated with mmap and it immediately releases memory to kernel upon free/delete call from user land process. The allocator uses two functions to get a chunk of memory from the kernel: - brk() sets the end of the process's data segment. - mmap() creates a new VMA and passes it to the allocator. The decision on whether to use brk() or mmap() requires one simple check. If the request is equal or larger than M_MMAP_THRESHOLD, the allocator uses mmap(). If it is smaller, the allocator calls brk(). By default, M_MMAP_THRESHOLD is 128KB But It seems I'm landed with a case which uses brk() for allocation and so it just marks as free when I my program frees the memory and hence 30 MB memory (I've 6 , 5MB buffers from heap)was kept on allocator's control leading to a 30MB leak of user land process. Please note that I'm freeing memory for 6 buffers (I'm sure about that). Regards, Ravi