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.
pgpvWo2L8ds0e.pgp
Description: PGP signature
_______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss