But the "good fit properties" of 103% means that it uses (up to) 3% more memory than necessary, so it *is* an inefficiency. OS4 has a similar wastage of (up to) 12.5%. BTW, the proper name for this is "internal fragmentation", unless I misunderstand you.
No, thats exactly NOT what it means. Good fit means that *if* there is a memory block of at least that size category, it will find it in O(1) -- otherwise the next bigger block is returned (also in O(1)). If the sizes are exactly the same, it will allocate and eat it, if the free block was bigger, it will split it accordingly AND NO MEMORY IS WASTED. The 103% only means that a "size category" is between 100% and 103% of the requested size, and it will not distinguish between a set of different free blocks within a category. I suggest to have a look at the paper describing TLSF.
Good fit means, that it will find a free block that will have a size /close/ to the requested block. Best/Exact fit would mean, the algorithm had to search *all* the free memory chunks for a block that fits exactly.
In any case, if there's only bigger chunk of free memory than requested, the memory block is split. And the remaining block is still available to the system. No memory is wasted.
Thus TLSFMem does not have internal fragmentation except for its alignment and allocation sizes need to be multiples of 16. If the OS4 allocator has internal fragmentation and if it's really up to 12,5%, it sucks.