Re: slab cache

Stephen C. Tweedie
2002-06-12T15:29:41Z

Hi,

On Wed, Jun 12, 2002 at 11:05:29PM +0800, David Chow wrote:

> >Using 4k buffers does not limit your ability to use larger data
> >structures --- you can still chain 4k buffers together by creating an
> >array of struct page* pointers via which you can access the data.

> Yes, but for me it is very hard. When doing compression code, most of
> the stuff is not even byte aligned, most of them might be bitwise
> operated, it need very change to existing code.

Perhaps, but the VM basically doesn't give you any primitives that you
can use for arbitrarily large chunks of linear data; things like
vmalloc are limited in the amount of data they can use, total, and it
is _slow_ to set up and tear down vmalloc mappings.

> get_free_page to allocate memory that is 4k to avoid some stress to the
> vm, I have no idea about the difference of get_fee_page and the slab
> cache. All my linear buffers stuff is already using array of page
> pointers, if there any benefits for changing them to use slabcache?
> Please advice, thanks.

It might be if you are allocating and deallocating large numbers of
them in bunches, since the slab cache can then keep a few pages cached
for immediate reuse rather than going to the global page allocator for
every single page. The per-cpu slab stuff would also help to keep the
pages concerned hot in the cache of the local cpu, and that is likely
to be a big performance improvement in some cases.