Hi,

here comes a patch series for an idea I have in mind for quite some
time: break up the nucleus heap layer so that it can support different
allocation schemes. Motivated was this idea by the great TLSF allocator
by Miguel Masmano et al.

I once played with TLSF in userspace as a malloc replacement for RT
apps, and I wondered if we shouldn't make use of it as well in the
nucleus. It's most beautiful property is its strict O(1) complexity in
my eyes, but it seems to provide even more qualities: less
fragmentation, less overhead, maybe even better performance.

I haven't done any thorough analysis on those advantages (I'm counting
on Miguel and others to prove them ;) ), only stability tests over the
last weeks and a simple comparisons of the overhead. With 8 user-space
tasks, a few mutexes, 8 RTDM sockets, and likely some other stuff
allocated I get e.g. these usage numbers:

bsdalloc:
size=524288:used=17720:pagesz=512

tlsfalloc:
size=524288:used=14036:pagesz=512


This patch series now first tries to abstract a common interface for
heap allocators. Those allocators can be statically selected at compile
time. As the second step it adds latest TLSF version 2.2.0 as an
alternative to BSD. Default remains BSD for now.

TLSF is currently limited to 32-bit archs, but 64-bit support is on the
roadmap according to Miguel. He kindly helped me with preparing the TLSF
patch for Xenomai usage. Thanks to him at this point!

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to