-
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
Remove unused Edon-R variants #13618
Conversation
I think that ignoring these compiler warnigs may also a reason for memory corruption on i386 and maybe other small stack architectures. I will rework this patch the same way as done with blake3 by pre-allocating a per-cpu space. |
69a0e97
to
b7b50eb
Compare
Have you seen memory corruption on i386 with this, then? I've seen plenty of issues with it panicking on i386, but none of them seemed to be from memory corruption so far... |
I want it to fit into default stack size ... and remove the pragma then. Maybe this is some source of memory corruption, but I have not checked this in detail. The result for for overwriting stacks is mostly pure random. When I get it into the stack space, the result is slower also :/ |
Just say "I dislike pragmas", if that's why you're doing it. |
0d877c0
to
7360810
Compare
Checkstyle is fine, the benchmarks show the same values.... and I could minimize the stack size also a bit. |
I'd look at precisely what flags the kernel is passing to compile with |
I am using Results:
|
Neat, so it believes in it. It seems like there's no difference in configuration for that flag between compilers, so my only guess would be if Clang is doing a better job at stack optimization... I'm curious how gcc is behaving so badly at it, in your pasted example for -m32. Maybe clang is playing loose with what's required to be on the stack? Dunno. Might also be interesting to compare with -O2, since I believe that's what the kernel defaults to... |
The comment above got an update... Each call within Q512() generates some used bytes on the stack at x32 (for gcc) ... when I remove some rounds in the end ... the stack gets under 1024 ... who cares ;-) |
@rincebrain - could you make a Code Review? |
I'll try to get to actually looking it over in depth later this week, but when I tested it, it didn't demonstrate any obvious incorrectness on a 100 GB edonr dataset generated with the old code... I'll also try and give it a spin on my BE systems just to be safe. |
I rebased again, cause the unused define |
I'm not Brian, but I at least use EdonR when I want nopwrite. :) I apparently have been bad at replying directly in here, but the smashing on sparc64 had nothing to do with this PR, to be clear, it just...does that now, I guess. :/ My concern, which I don't think I posted already, sorry, is that while I don't think any of the cleanup is particularly controversial and you could probably convince something to check and agree that the changes don't change the behavior for any codepaths that are hit, if you were really motivated in that way, I just get worried about any sort of large-scale changes to anything core like checksums or compression (...I say with my fingers in many branches of both pies), and I'm wondering how much the cleanup and performance delta is worth any risk of changing it, even marginal. (Normally I'd also be worried about ever syncing with upstream, but I think we can all agree that's never changing again.) I also tend to optimize toward avoiding risk when giving advice outside of what I do to my own systems, though, so perhaps I'm being overcautious. |
@mcmilk I'm sure edonr is used and nobody would complain about a speed up! But I do share @rincebrain's concerns above about this being a non-trivial change. Creating a testing tool is great, but can you also do some some manual testing if you haven't already. I'm thinking something along the lines of creating a pool on one platform, filling it with some data, then importing the pool on other platforms and scrub it to verify those implementations. It seems like that should catch anything seriously broken. |
I only have x86_64 arch VMs with full root access. Sth. like Arm, Aarch64, PPC and so on is only userspace testing. Has someone of you (@rincebrain @behlendorf) already tried to get a machine there? My Raspberry Pi3 may also an option... I forgot. Will import with old zfs there... this should be a simple testcase... will do this in the weekend. |
I've not, but I've heard it's straightforward and have suggested adding a CI bot with one. I do have sparc64 and aarch64 laying around my home, and usually have a ppc64le VM but the host is off for maintenance atm. |
Nor have I. Another option might be to update PR 6209, it adds offline |
Not there anymore: https://openpower.ic.unicamp.br/minicloud/ :/ |
fbfdf4e
to
bb53d13
Compare
71a5bf3
to
fd0883f
Compare
A fresh rebase on master now that #13741 has been merged would be nice. |
CentOS 7 does this while installing:
|
This commit removes the edonr_byteorder.h file and all unused variants of Edon-R. Signed-off-by: Tino Reichardt <[email protected]>
This commit removes the edonr_byteorder.h file and all unused variants of Edon-R. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Tino Reichardt <[email protected]> Closes openzfs#13618
This commit removes the edonr_byteorder.h file and all unused variants of Edon-R. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Tino Reichardt <[email protected]> Closes openzfs#13618
This commit removes the edonr_byteorder.h file and all unused variants of Edon-R. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Tino Reichardt <[email protected]> Closes openzfs#13618
This commit removes the edonr_byteorder.h file and all unused variants of Edon-R. Reviewed-by: Brian Behlendorf <[email protected]> Signed-off-by: Tino Reichardt <[email protected]> Closes openzfs#13618
New Features - Block cloning (#13392) - Linux container support (#14070, #14097, #12263) - Scrub error log (#12812, #12355) - BLAKE3 checksums (#12918) - Corrective "zfs receive" - Vdev and zpool user properties Performance - Fully adaptive ARC (#14359) - SHA2 checksums (#13741) - Edon-R checksums (#13618) - Zstd early abort (#13244) - Prefetch improvements (#14603, #14516, #14402, #14243, #13452) - General optimization (#14121, #14123, #14039, #13680, #13613, #13606, #13576, #13553, #12789, #14925, #14948) Signed-off-by: Brian Behlendorf <[email protected]>
This commit removes the edonr_byteorder.h file and all unused
variants of Edon-R.
Signed-off-by: Tino Reichardt [email protected]
Motivation and Context
Simplify the code and generate little speedups also ;-)
The size of the compiled
edonr.o
with debugging went down from 574,128 to 111,672 bytes.Description
How Has This Been Tested?
I have run the standard testing procedures on a test system... the CI seems also fine.
Types of changes
Checklist:
Signed-off-by
.