lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

In our game we managed to reduce fragmetation to 0%.
What we do is managing small allocations(smaller than 513 bytes) and big allocations in a different way.
for every allocation size between 1 and 512 bytes we allocate a 4K page where we will store only object of a certain size;
for example 1 page with only 4 bytes chunks 1 page with only 32 bytes page.we round the allocations size to multiple of 4.
for all chunk bigger than 512 bytes, we allocate it with a normal general pourpose allocator using a "best fit" algorithm.
we "waste" 200/300k of memory every 100Mb allocated.
With this solution we have an allocator that is almost CPU free for small alloc/free and relatively fast for big alloc/free
because the number of chunk managed by the "best fit" are not so many.

we do not have a dedicated pool for lua but a dedicated pool for all game.


Alberto Demichelis
Crytek Studios GmbH

-----Original Message-----
From: Benoit Germain []
Sent: Donnerstag, 17. Oktober 2002 17:30
To: Multiple recipients of list
Subject: RE: Functions and memory usage

I use dlmalloc too, and I have slightly modified it so that I can manage
several memory pools. That way, I ensure that fragmentation won't affect the
entire RAM, but will be confined to some area of my choosing. All I have to
do is dedicate one pool to LUA, et voilà :-).

> -----Original Message-----
> From: terenctb []
> Sent: jeudi 17 octobre 2002 08:12
> To: Multiple recipients of list
> Subject: Re: Functions and memory usage
> Hi,
> We are did try to use dlmalloc to replace the regular malloc but it 
> didn't seem to make much difference...well other than the fact we are 
> probably doing something wrong anyway ;-)>
> I also found out(not sure if the info that valid) that the dlmalloc 
> is the same one used by in linux anyways so it seemed kinda silly to 
> replace it.
> Terence
> --- In lua-l@y..., Luiz Henrique de Figueiredo <lhf@t...> wrote:
> > >I think a lot of fragmentation problems are down to the allocation
> > >algorithm. There is some useful info here and I think this 
> allocator
> > >looks pretty good. I think I pulled it off this list a while ago. 
> Its
> > >fast and should be good for a scripting system allocating and
> > >deallocating little blocks of similar sizes.
> > >
> > 
> > We'd be very interested in knowing whether simply replacing the 
> system malloc
> > and friends by dlmalloc (the one at the URL above) helps. It's 
> difficult for
> > us to test memory allocation pattern in typical, real-life cases. 
> So, someone
> > with memory fragmentation problems or suspicion of such, could you 
> please try
> > dlmalloc and see if makes any difference? Please report here. 
> Thanks.
> > 
> > Another thing: Lua typically does not deallocating little blocks of 
> similar
> > sizes: strings and userdata allocated their "data" arrays right 
> after the
> > "header" part.
> > --lhf