3.41 TBのデータがあるプールがあり、ボリューム上で重複排除が有効になっていることが出力から判断できます。
zpool status -D <pool_name>
...
dedup: DDT entries 73665285, size 696B on disk, 154B in core
...
RAMに保存されるDDTは10GBのみで、それ以上のデータをロードするとブロック数が増え、バイト数が減ることがわかります。私の知る限り、DDTはARCのメタデータに保存されており、出力時にアークメタ使用、そこには約8GBしか表示されません。これはメタデータの量の制限です(zfs_arc_meta_limit_パーセント) は 75% に設定されていますが、RAM の量 = 64GB にはまだ達していません。重複排除テーブル全体が RAM にダンプされないのはなぜですか?
この出力によると、私のDDTサイズは37.19GBです
zdb -b pool
bp count: 124780196
ganged count: 0
bp logical: 3997925134336 avg: 32039
bp physical: 3988307198976 avg: 31962 compression: 1.00
bp allocated: 6056878956544 avg: 48540 compression: 0.66
bp deduped: 2188370706432 ref>1: 15910160 deduplication: 1.36
SPA allocated: 3868508110848 used: 25.36%
additional, non-pointer bps of type 0: 95
Dittoed blocks on same vdev: 3706666
テーブルが RAM にページングされないのはなぜですか? また、強制的にアンロードするにはどうすればよいですか?