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


Reply via email to