[zfs-discuss] Re: Re: no activity, uses all memory then crashes

Gregor Kopka gregor at kopka.net
Mon Jun 4 14:06:21 EDT 2012



Am 04.06.2012 18:44, schrieb Niels de Carpentier:
>> On Mon, 2012-06-04 at 18:14 +0200, Niels de Carpentier wrote:
>>> It mainly slab inefficiency. A 262144 byte block can only hold 31 4096
>>> objects max, so more than half the memory is always wasted.
>> I don't quite follow here. How big are "4096 objects"? (Obviously,
>> they're not 4096 bytes if a 262144 byte block can only hold 31 of them.)
>> Shouldn't ZFS take that size into account? In other words, why is ZFS
>> trying to allocate blocks in inefficient sizes? If more than half of a
>> block will *always* be wasted, the block is *at least* twice as big as
>> it should be.
> It's not ZFS, it's the slab, which is the linux specific spl layer.
> The problem is the blocks need to be aligned on 4096 boundaries as well.
> Since the slab uses a small header before each object, they have to be
> spaced 4096 bytes apart. I'm working on a patch that stores the headers
> separately from the objects, which allows tight packing of the objects. I
> just have been so busy with work that I haven't had time to work on it the
> last months.
Does ZFS has its own SLAB allocator, or is it using the one in the kernel?

Asking since SLUB is available in the kernel which dosn't suffer from 
the small headers:
http://lwn.net/Articles/229984/ and http://lwn.net/Articles/229096/ for 
details

Gregor



More information about the zfs-discuss mailing list