-
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
xattr dataset prop: change defaults to sa #15147
Conversation
Works well, but there is an interesting nit:
, SO if we change There is only one side note in this case - someone have to set tests:Create pool on pre-PR code:
Import that existing pool via PR code:
Create pool on PR code:
Import pool created by PR code via pre-PR code:
|
I wonder what would be typical real-world scenarios of new xattr=sa in combination with default dnodesize=legacy. Default dnode has not so much space bonus space and partially it is already used, so sa's above hundred or two bytes will probably use a spill block, that may still be cheaper than xattr=dir if the xattr is accessed often, but still an additional block read. Man page recommends to use dnodesize=auto (means double dnode size now) in case of xattr=sa, but changing it by default is a waste is xattrs are not used. |
\o here :)) we're running btw this isn't too nice to get hit by either - #11353 |
We should strongly consider setting @snajpa do you know if #11353 is still an major issue with the 2.2 release candidates. https://github.com/openzfs/zfs/releases/tag/zfs-2.2.0-rc3. I thought we'd done significant work to avoid the performance penalties when possible. I'd also expect new pools which have always used |
@behlendorf I personally worry not so much about on-disk capacity, as for in-memory. In case of many dnodes cached we get twice more unevictable buffers backing them. ARC should be able to limit that unevictedness, but would be good to not have to bother about it. |
I set It would like to use
Just to be sure to understand: sending a |
Freshly rebased. FWIW, in 2015-2016 (wow!) I had a home server with HDDs (and still have it), where GUI was very sluggish with zfs 0.6 and xattr=on, but with xattr=sa (without changes on dnodesize) it became much-much more fancy, and I didn't have visible sub-second freezes after that. Yes, it's not so technical review, but FWIW. Since that time I recommend everybody to use xattr=sa and use it myself everywhere I can. If there's no downsides to set dnodesize=auto today - I can change it's defaults too, but I didn't investigate it myself. |
It's the main recommendation to set xattr=sa even in man pages, so let's set it by default. xattr=sa don't use feature flag, so in the worst case we'll have non-readable xattrs by other non-openzfs platforms. Non-overridden default `xattr` prop of existing pools will automatically use `sa` after this commit too. Signed-off-by: George Melikov <[email protected]>
@gmelikov thanks for rebasing this. Now is definitely the best time to make this change so it's the default for the 2.3 release. I agree, let's move forward with this so so new datasets just do the best thing. As for the |
@behlendorf I think it's important to highlight that this patch: will override xattr not only for new datasets, but for old datasets with not explicitly changed I still think it's good to go, but wanted to be explicit here. |
Although this issue existed before this PR, in case anyone has any ideas:
Both |
@ixhamza sorry, missed your comment, good point!
then all people start to see =sa by default, and it may break some business logic around ZFS
Maybe I'm wrong, but it'll need a feature flag (glad to be wrong here). So unfortunately, I don't see a cleaner way for now, again - will be glad to be wrong here. |
I'll push this PR as proposal for better defaults, but will set it as draft until manual testing.
Motivation and Context
Let's have optimal default settings.
Description
It's the main recommendation to set xattr=sa
even in man pages, so let's set it by default.
xattr=sa don't use feature flag, so in the worst
case we'll have non-readable xattrs by other
non-openzfs platforms.
Non-overridden default
xattr
prop of existing poolswill automatically use
sa
after this commit too.How Has This Been Tested?
CI's tests looks good, I'll check compatibility with existing pools later.
Types of changes
Checklist:
Signed-off-by
.