Re: slab cache

David Chow
2002-06-13T16:34:12Z

Stephen C. Tweedie wrote:

>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.
>
>--Stephen
>

Thanks for comment, since you mention about cache, do you mean CPU L2
caches? I don't use to dynamic alloc and dealloc pages, I have a fixed
sized cache per CPU, even using vmalloc I will only do it only once
during module initialize, and dealloc only on unload, so the performance
about allocation does not matter me, but it would be interesting to do
something to keep those allocations higher chance to cached by the CPU's
L2 cache. I experience 512K cache CPU's are lot faster .

-- David