Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Jul 2010 15:00:37 +0200
From:      Alexander Leidinger <Alexander@Leidinger.net>
To:        Andriy Gapon <avg@icyb.net.ua>
Cc:        fs@freebsd.org
Subject:   Re: arc cache: pagesize and/or power of 2 constraints?
Message-ID:  <20100729150037.88416rjfjpjj7fwo@webmail.leidinger.net>
In-Reply-To: <4C517436.7080509@icyb.net.ua>
References:  <20100729093158.86036msee9pbayw4@webmail.leidinger.net> <4C517436.7080509@icyb.net.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Andriy Gapon <avg@icyb.net.ua> (from Thu, 29 Jul 2010 15:29:42 +0300):

> on 29/07/2010 10:31 Alexander Leidinger said the following:
>> Hi,
>>
>> while writting some acceptance tests for the Solaris machines at work I
>> wondered if the size of the arc cache should be a multiple of the page
>> size and/or a power of 2. I searched the net, but was not able to find
>> some info regarding this.
>
> I suppose you mean ZFS ARC, not an ARC concept in general.

Yes.

> I wonder why you came at this question.
>
>> I would expect that it does not make sense to have an arc cache size
>> which is not a multiple of the page size.
>
> Why?

Does it make sense to allocate less than a memory page in the kernel?  
When I allocate in the same kernel-subsystem two times 1/4 of a memory  
page, can the allocations end up in the same memory page? If two  
independend subsystems try to do the same, can the allocations end up  
in the same page?

>> And depending on how the arc
>> cache is implemented, it would make sense to have it even as a power of
>> 2 size (even if it is able to handle non-power-of-2 sizes).
>
> Why?

If something is working on a binary tree of pages, you could end up in  
a case where you waste a page, if the size is not related to (2^n +/-  
x) * pagesize.

Yes, this is bean-counting.

>> Did someone had a look at this in FreeBSD?
>
> ARC size is almost arbitrary.
> It's a collection of malloc/uma allocated buffers of various sizes,  
> individual
> sizes are various multiples of 512.

So it would make sense to set the size to n*512 (instead to e.g.  
n*512+x with 0 < x < 512)?

Bye,
Alexander.

-- 
BOFH excuse #102:

Power company testing new voltage spike (creation) equipment

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100729150037.88416rjfjpjj7fwo>