Re: [RFC][PATCH 03/10] zsmalloc: introduce zs_can_compact() function

Sergey Senozhatsky
2015-06-04T03:42:18Z

On (06/04/15 12:30), Minchan Kim wrote:
> > -- free objects in class: 5 (free-objs class capacity)
> > -- page1: inuse 2
> > -- page2: inuse 2
> > -- page3: inuse 3
> > -- page4: inuse 2
>
> What scenario do you have a cocern?
> Could you describe this example more clear?

you mean "how is this even possible"?

well, for example,

make -jX
make clean

can introduce a significant fragmentation. no new objects, just random
objs removal. assuming that we keep some of the objects, allocated during
compilation.

e.g.

...

page1
allocate baz.so
allocate foo.o
page2
allocate bar.o
allocate foo.so
...
pageN

now `make clean`

page1:
allocated baz.so
empty

page2
empty
allocated foo.so

...

pageN

in the worst case, every page can turn out to be ALMOST_EMPTY.

-ss