-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
zdb and zpool disagree on DDT size; how do I estimate additional memory requirements for DDT based on their output? #7323
Comments
Looking at the code at the first link, which essentially is
it feels like I have started with original ( and old ) instructions instructions from Oracle, which basically say "multiply the number of DDT entries to 320". I assume that the value of 320 has changed since, but had some hope that I can get an idea of that change. ( I have also tried to run However I still struggle to understand why the same data which shall produce basically the same DDT may reflect in a ten-fold difference in statistics. As for other considerations -- I understand that there are plenty. Saso Kiselkov seems to cover most of them in his talk on OpenZFS Conference -- see first few minutes, and I understand that one should consider not only memory/space requirements, but also performance, and even data integrity. However, from what I gather, understanding memory footprint is critical for dedup users, since "undo" options are painful or limited ( basically resend all streams back with As for #5182 -- I am putting very high hopes in it and from what I see it just went through some review by Matt Ahrens ( finally -- as Don presented it some three years ago, I think ), so it looks like it started its way to trunk. ( And I'm still not sure how do I restore DDT if e.g. the dedicated DDT storage fails. But this shall be probably discussed in a different thread. ) |
There are mixed reports, including some positive. Was that 1 TB SSD the (only) primary storage -- or an L2ARC device? Anyway, I would still be interested to know how do we estimate how much memory we need -- both for RAM-only and L2 SSD configurations. |
This issue has been automatically marked as "stale" because it has not had any activity for a while. It will be closed in 90 days if no further activity occurs. Thank you for your contributions. |
First of all, I am having this problem for a fairly old ZFS version
0.6.5.6
. However, I have searched closed issues and can't seem to find anything related yet ; so any hints are very much welcome.System information
Describe the problem you're observing
zdb -DD $poolname
andzpool status -D $poolname
show different dataDescribe how to reproduce the problem
Include any warning/errors/backtraces from the system logs
I am trying to estimate memory requirements for enabling deduplication on our datasets, based on a large known statistics for the number of used blocks for existing data and an estimated size of a per-block DDT entry.
To estimate the latter I created a test pool
pool1
withdedup=verify
and am trying to make sense ofzdb -bDD pool1
andzpool -DD pool1
output.However, while they seem to agree on the block count, the reported numbers for "on disk" / "in core" seem to differ dramatically -- probably due to slightly different ways it is calculated in the code:
So I wonder why are they different, and how do I use either to estimate DDT memory requirements for the ZFS version at hand.
Now I apologize for some lengthy listings -- please just look at "on disk" / "in core" lines there, and feel free to ignore the rest:
(1)
zpool create -f pool1 -m /local -O dedup=verify -O atime=off 'wwn-0x6b8ca3a0f7ce210019f34ed0155b160f-part2'
, then just add some data:(2) add more data and observe that DDT is filling up:
( not showing the second DDT dump, since both times it's produced by the same
zpool_dump_ddt()
call ):(3) snapshotted the previous state, and then deleted all data:
(4) wrote it back:
(5) Finally, deleted all data, took another snapshot ( of the empty space ), and add the same data back again:
Please note that these reported numbers do not stick together at all:
zdb
) or 72 (zpool
) ;zdb
) do not average to 2873 entries of size 116 (zpool
) :216 + 2657 == 2873
, but the average can't get smaller thanmin(170, 155)
;zdb
statistics is more stable.The text was updated successfully, but these errors were encountered: