It was my understanding that both dedup and caching work on
block level. So if you have identical on-disk blocks (same
original data past same compression and encryption), they
turn into one(*) on-disk block with several references from
DDT. And that one block is only cached once, saving ARC space.
* (Technically, for very-often referenced blocks there is a
number of copies, controlled by ditto attribute).
zfs-discuss mailing list