Talloc and Tdb spin offs

tridge at samba.org tridge at samba.org
Mon Sep 10 04:55:25 GMT 2007


Simo,

 > I am not sure this can be done in a useful way if you mean doing
 > something like #define malloc my_talloc_malloc(...).

no, I don't mean that. I mean a full replacement malloc library.

 > The only case where that would work, I guess, is when you recompile an
 > application from scratch with all libraries, or, if you can intercept
 > glibc's malloc/free through some kind of LD_PRELOAD trick. Otherwise any
 > time you link to a library at runtime things will just break. I just
 > experienced a bug like this with some code in bind.

We shouldn't need LD_PRELOAD tricks. libtalloc would include the
symbols for malloc, free etc, and those would be found by the loader
and used by all code (including linked libraries).

 > I am reading this code and it seem interesting, but one thing that seem
 > a no-go, imo, is the "compile time" thread safety. If you use this code
 > in a library you want to be thread safe, but possibly only when
 > necessary. If it is a compile time option that means a
 > developer/packager will have to always compile in the thread safety
 > functions, just in case

if you are using this as a general system shaed lib you'd always have
to compile in the thread safety code. That slows it down (though not
by a lot).

 > Is there any other advantage?

yes, it uses vastly less memory with some allocation patterns than
glibc malloc. For example, it saved us more than 80% of memory when
used with current Samba4 instead of system malloc.

The main aim of alloc_mmap is to make for very compact memory usage,
and always releasing memory back to the system if possible. It also
happens to form a good basis for a system allocator for talloc

 > Have you considered systems with huge pages ?

this allocator doesn't want them

Cheers, Tridge


More information about the samba-technical mailing list