It uses the ideas from LFMalloc (Lock free malloc implementation) and TCMalloc to create a more time and memory efficient approach to memory allocation in C Language.
Refer to the following literature for understanding implementation of LFMalloc and TCMalloc.
- Dice, David & Garthwaite, Alex. (2002). Mostly lock-free malloc. SIGPLAN Notices. 38. 269-280.
- http://goog-perftools.sourceforge.net/doc/tcmalloc.html
void *malloc(size_t size);
void free(void *ptr);
- Fine grained size classes for small sized memory requests.
- Balance between number of size classes and fragmentation.
- Mostly Lock free approach to memory allocation to increase parallelism.
Performance comparison with libc malloc library for 10, 50, 500, 1000 threads. Please refer to docs for detailed benchmarks.
- High frequency of upcalls.
- Kernel driver does not support re-routing upcalls based on specific threads.
- Process can go into a cycle of upcall->kernel->upcall as the number of threads increases.