You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafficserver.apache.org by Leif Hedstrom <zw...@apache.org> on 2010/12/04 23:25:52 UTC

Replace SDKAllocator with a ClassAllocator instance?

Hi all,

as a final effort to eliminate some "malloc" on the critical path for 
some very commonly used APIs, I have a proposal for removing the 
SDKAllocator entirely, and replace it with a simple ClassAllocator 
instance. The patch is attached to TS-577 for review.

Here's the executive summary:

* Replacing SDKAllocator with a ClassAllocator eliminates many 
malloc/free on the critical path (when plugins are in used). There's 
also some overhead of the SDKAllocator being copied/instantiated fairly 
often during a transaction (but that is probably marginal, it's a tiny 
class).

* Poorly written plugins will leak memory with this change. It is 
already required in all docs that you have to release these MLoc 
handles, but the way the SDKallocator works, when the header heap goes 
out of scope, it will automatically release (and therefore free) any 
MLoc handles that the plugin has created but not released. It's 
basically doubling as a garbage collector right now.

* The main reason, as far as I can understand, for having the 
SDKAllocator with garbage collection,  was for backwards compatibility 
with older versions of Inktomi Traffic Server, which did not require the 
"release" of these resources. Since we don't care about such backward 
comparability, I think that is a non-issue.


Any objections to doing this change?

-- Leif