views:

132

answers:

3

I looking for some (custom) memory managers/allocator written in c and went through some articles, -

Some Links :

I have to sandbox a small web-server using any available one and I have no problem in writing wrappers for thread handling / allocation scheme. Apache WS uses memory pools for handling memory and the pools are not persistent, it is per-request basis. Can you guys suggest something? Some good / best approach to this problem ? My requirements are as below ;-

  1. (Bounded Response Time) allocation and de-allocation has to be known in advance, i.e some constant cost O(c), where c is constant.

  2. Fragmentation from heterogeneous allocation/de-allocation sizes or sequences should be handled, I can write the schema / wrapper to provide the same.

Truly appreciate you help and ideas!

A: 

I am not exactly sure but if I remeber right, NGinx Web Server seems to fit the bill. You could check it out.

MovieYoda
Thanks! But i am not looking a web server instead looking for a memory manager to sandbox one. I am interested in looking at the nginx code, does it do memory management by itself?
yadab
sorry bud, I have run out of suggestions. Let us know what you eventually ended up doing. Will help us ALL grow.
MovieYoda
+1  A: 

Fragmentation from heterogeneous allocation/de-allocation sizes or sequences should be handled, I can write the schema / wrapper to provide the same.

To avoid fragmentation, you will have to use a hybrid block allocation strategy. Hybrid here means different sized element blocks than having single sized element blocks i.e. The allocator (or a wrapper around it) should maintain blocks of different-sized elements(small, medium and large etc.). All allocation requests should be rounded up to the nearest block boundary. This strategy shall ensure you will not suffer from external fragmentation but can cause internal fragmentation. You can find more info at the following links:

http://www.cotsjournalonline.com/magazine/articles/view/101217/pg:2 http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf

Suresh Kumar
+1  A: 

Just to add one more to your list

Google Performance Tools

It improves significantly memory allocation performance and it has CPU and memory profilers. Their Thread-Caching Malloc implementation is meant to be quite efficient for multithreaded applications.

msalvadores
@msalvadores : Thanks! It looks very good. But one doubt, I may be wrong, becuase of Garbage collection, will it become non-realtime, I mean fail to have "Bounded Response Time" ?
yadab