From: D Yuniskis on
Hi,

Quasi-deterministic malloc/free implementations tend to
be inefficient (i.e., wasteful of resources).

But, I wonder if dynamic changes to the algorithms used
by malloc/free can be exploited to provide *application
specific* deterministic behavior in certain contexts.

E.g., implement malloc(3) more like:

malloc(size_t size, int (* selector)(fragment_t *))

with similar changes to free(3).

Has any work been done in this regard?

Or, any work evaluating different algorithms to satisfy
requests and releases? I suspect any experiments into
this have probably been applied in desktop environments
instead...

Thx,
--don
From: Boudewijn Dijkstra on
Op Wed, 24 Feb 2010 07:48:35 +0100 schreef D Yuniskis
<not.going.to.be(a)seen.com>:
> Quasi-deterministic malloc/free implementations tend to
> be inefficient (i.e., wasteful of resources).

Non-deterministic malloc/free implementations tend to
be inefficient (i.e., unpredictable timing).

> But, I wonder if dynamic changes to the algorithms used
> by malloc/free can be exploited to provide *application
> specific* deterministic behavior in certain contexts.
>
> E.g., implement malloc(3) more like:
>
> malloc(size_t size, int (* selector)(fragment_t *))

What are you implying here? The user seems to be required to supply a
pointer to a "fragment selector function". What is that supposed to do?

> with similar changes to free(3).
>
> Has any work been done in this regard?
>
> Or, any work evaluating different algorithms to satisfy
> requests and releases? I suspect any experiments into
> this have probably been applied in desktop environments
> instead...



--
Gemaakt met Opera's revolutionaire e-mailprogramma:
http://www.opera.com/mail/
(remove the obvious prefix to reply by mail)
From: Vladimir Vassilevsky on

Have different heaps with different algorithms.


Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com



D Yuniskis wrote:

> Hi,
>
> Quasi-deterministic malloc/free implementations tend to
> be inefficient (i.e., wasteful of resources).
>
> But, I wonder if dynamic changes to the algorithms used
> by malloc/free can be exploited to provide *application
> specific* deterministic behavior in certain contexts.
>
> E.g., implement malloc(3) more like:
>
> malloc(size_t size, int (* selector)(fragment_t *))
>
> with similar changes to free(3).
>
> Has any work been done in this regard?
>
> Or, any work evaluating different algorithms to satisfy
> requests and releases? I suspect any experiments into
> this have probably been applied in desktop environments
> instead...
>
> Thx,
> --don
From: D Yuniskis on
Boudewijn Dijkstra wrote:
> Op Wed, 24 Feb 2010 07:48:35 +0100 schreef D Yuniskis
> <not.going.to.be(a)seen.com>:
>> Quasi-deterministic malloc/free implementations tend to
>> be inefficient (i.e., wasteful of resources).
>
> Non-deterministic malloc/free implementations tend to
> be inefficient (i.e., unpredictable timing).

That is well-known. My point is, those attempts at producing
(quasi)deterministic algorithms usually work at the expense
of wasting memory (c.a.e)

>> But, I wonder if dynamic changes to the algorithms used
>> by malloc/free can be exploited to provide *application
>> specific* deterministic behavior in certain contexts.
>>
>> E.g., implement malloc(3) more like:
>>
>> malloc(size_t size, int (* selector)(fragment_t *))
>
> What are you implying here? The user seems to be required to supply a
> pointer to a "fragment selector function". What is that supposed to do?

Obviously: select the "best" fragment to fit the request!

>> with similar changes to free(3).
>>
>> Has any work been done in this regard?
>>
>> Or, any work evaluating different algorithms to satisfy
>> requests and releases? I suspect any experiments into
>> this have probably been applied in desktop environments
>> instead...
From: D Yuniskis on
Hi Vladimir,

Vladimir Vassilevsky wrote:
>
> Have different heaps with different algorithms.

I currently support multiple heaps. The post was intended
to show how *any* heap could support a choice of algorithms
(hence the selector function) -- which could be applied to
a single heap as well as multiple heaps.

>> E.g., implement malloc(3) more like:
>>
>> malloc(size_t size, int (* selector)(fragment_t *))
>>
>> with similar changes to free(3).
>>
>> Has any work been done in this regard?
>>
>> Or, any work evaluating different algorithms to satisfy
>> requests and releases? I suspect any experiments into
>> this have probably been applied in desktop environments
>> instead...