-
Notifications
You must be signed in to change notification settings - Fork 69
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
Update libfuse3 #252
Comments
Most likely yes :)
And as soon as Ubuntu moves past 3.14.0, it'll be fixed automatically. |
_buntu are wrong. a most smart steps are commiting to linux/debian, as its base, not creating their own patches for a sales. they think what they move like crossover/wine, but, finally, will fall with that greed. imo. |
Turns out I can build DwarFS on Alpine now. Even static builds seem to work just fine. Alpine has fuse 3.16.2, so this would be an easy fix. (Plus, the binaries are going to be slightly smaller.) |
@mhx Hi! I would like to point out that musl malloc has terrible performance and this is especially evident in FUSE filesystem projects (e.g. SquashFS) and memory intensive projects. I have been building squashfs utilities and my other projects in alpine (musl) using mimalloc to get almost the same performance as usual static linking with glibc (but still a bit faster with glibc). But linking with mimalloc has some pitfalls, such as poor compatibility of newer versions of mimalloc with older x86_64 processors (psabi v1) and other architectures (aarch64), now I chose version v2.1.7 for my projects. Also, if you want to reduce the size of the dwarfs-universal static build, you can build all dependencies and dwarfs-universal with these flags:
as I do here. |
The DwarFS static binaries all use
I'm probably going to skip the
Actually, I just did a quick benchmark of the FUSE driver part of the universal static binary. Using a DwarFS image with 6.2 GiB of astrophotography images, I ran:
The total run times were pretty much identical, with a slight edge for the Alpine/musl binaries (the
A second test using an image with 700 MiB in ~75,000 source files and running:
Again, very similar results:
|
Does the -Os flag have a bad effect on speed in your test? you can get the clang -Os glibc+jemalloc build from here: https://github.com/VHSgunzo/dwarfs/releases/tag/v0.11.2 although the difference with the -Os from Alpine is also interesting |
I'll give |
This was definitely an interesting exercise!
What does this do?The input data is 20 Perl installations, a total of 26401 files or 678 MiB of data. The configuration for What do we learn?I think the most important lesson is: never use Also, there really isn't much point in using Finally, optimizing for size with Admittedly,
And the UPX compressed universal binaries:
The v0.11.2 release binary (ubuntu, clang) had a size of 5,312,592 bytes. Bringing that down to 4,595,732 seems tempting. Now the bad news:
The new binaries are around 10% slower than the release binary built on Ubuntu. I'll dig into where that might be coming from. Interestingly, in terms of raw CPU time, the new binaries actually consume less, but they're still slower. |
It's |
It's interesting! Btw, what if use mimalloc instead of jemalloc? |
Well, it's a bit unsurprising, unfortunately. glibc with its ifunc feature just switches to
It sucks :)
I've build that binary with I'm actually surprised how bad |
If it is compiled with the secure flag that guard pages, encrypted free lists, etc, then it is clear why there is such a difference) For example, mimalloc from the alpine linux repositories comes by default in this form and the insecure version is stored separately. |
I guess it's not:
|
Then it's very strange) |
I have compared the rust project (wrappe) and packaging with it a directory with bash and all the necessary libraries for it including terminfo files (a lot of small files) and here are the results I managed to achieve:
I.e. with mimalloc is several times faster than with jemalloc (jemallocator) and musl malloc (default for x86_64-unknown-linux-musl target) later, I'll try to rebuild squashfuse with jemalloc to compare it with the mimalloc build too |
Hi, thanks for the new release!)
Is it possible to update the libfuse3 version to get rid of this message?
It’s probably a libfuse3 issue fixed in 3.14.1
The text was updated successfully, but these errors were encountered: