On Wed, Apr 07, 2010 at 01:52:23AM +1000, taemun wrote:
> I was wondering if someone could explain why the DDT is seemingly
> (from empirical observation) kept in a huge number of individual blocks,
> randomly written across the pool, rather than just a large binary chunk
> somewhere.

It's not really a question of physical allocation contiguity, or
pre-allocating in larger chunks.  Remember that this would not be
maintained after updates in a CoW system anyway. 

It's a question of access pattern.  The DDT is indexed by block
hash. Hashes are effectively random (for the purposes of this
discussion), and so updates to the DDT for blocks in any other
order than block hash, is effectively random-order. 

There's not really an effective way to (say) remove blocks in
block-hash order.  There might be room for some optimisations here and
there (maybe freeing the blocks of each object in hash-order) but the
overall access pattern is still going to be heavily random-order.

> (side note: can someone explain the "size xxx on disk, xxx in core"
> statements in that zdb output for me? The numbers never seem related to the
> number of entries or .... anything.)

I've not yet seen a good one, though there has been some speculation,
from me included.

--
Dan.

Attachment: pgpvWo2L8ds0e.pgp
Description: PGP signature

_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to