You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
misleading claim "the FUSE process uses 12-40x the RAM" for DwarFS #2
It reads /proc/meminfo and takes the largest value strictly below MemAvailable / 1.3. A GitHub runner reports ~16 GiB, so it gets the max, 1536 MiB. A 1 GiB machine gets 512 MiB, and under ~83 MiB free it drops to 32 MiB.
That choice drives the rest too (main.rs:3869-3937): workers is all CPUs at 1536M/1024M, 2 at 896M, 1 below, and the small tiers get tidy_interval=500ms,tidy_max_age=1s instead of 2s/10s, so blocks are freed far more eagerly. And it is overridable via DWARFS_CACHESIZE en variable.
Here we are getting into the territory of the objectives of a compression scheme. You can see the criteria and weights I have applied. These are key aspects I care about in an AppImage compression scheme, and I would assume many users will.
With current RAM prices and people being forced to squeeze as much as possible into as little RAM as possible, this is wasteful and should imho be changed to use the minimal amount of RAM one can get away with, to leave as much as free RAM as possible to the applications.
That's not wasteful, it is making correct use of resources to improve the user experience. These stuff have alraedy been tested on ancient systems and they perform better than squashfs.
AppImage has been commonly criticized for its slow launch times, dwarfs fixes this problem while keeping it small. I mean without even talking about dwarfs, the recommendation here is squashfs zstd7 and 128K blocks??? That's going to produce fatter appimages than the default settings your appimagetool lol
If anything people run into disk space issues, I actually have this problem right now on my system, and there are systems out there like the 64GiB version of the steamdeck that people use.
Making the cache small does not remove the gap: even with a 64M cache the DwarFS process uses 150-300 MB (6x squashfs here), because it also holds metadata and decompression buffers
The rationale is wrong, the reason RSS is higher still is due to DWARFS_READAHEAD. testing locally:
configuration
blocks
peak RSS
peak RSS wtih DWARFS_READAHEAD=0
SquashFS: 128K, zstd7
128K
30.8 MB
-
SquashFS: 1M, zstd22
1M
120.4 MB
-
DwarFS: 1M blocks, zstd22 32M cache
1M
231.5 MB
145.5 MB (close to squashfs for the same block size)
DwarFS: 1M blocks, zstd22 64M cache
1M
270.3 MB
192.6 MB
DwarFS: 64M blocks, zstd22 64M cache
64M
330.1 MB
330.1 MB
I need to test launch time with and without readahead, but right now it seems readahead actually hurts than help, before it used to help but dwarfs and the uruntime have changed a lot since then (like the case hotness list no longer having a measurable impact for example).
@Samueru-sama thanks for looking into this. I am happy to re-run the tests if you can tell me how exactly to run/configure uruntime and/or DwarFS. Thanks!
6. @Samueru-sama thanks for looking into this. I am happy to re-run the tests if you can tell me how exactly to run/configure uruntime and/or DwarFS. Thanks!
Two things:
-S26 -B6 is no longer used, instead -S26 -B2 is prefered instead, why? Because when the DWARFS_CACHESIZE gets down to 128M throughput drops to 60 MB/s with -B6 which is bad, however with -B2 it just drops to 158MB/s which is still a significant impact on performance but not that terrible.
Dwarfs RSS is not higher because "it also holds metadata and decompression buffers", if you compare dwarfs vs squashfs both using 1MB blocks, RSS will be similar as long as DWARFS_READAHEAD is set to 0.
Caveat, both of these things were done with local tests, it is not guranteed this will translate to the CI tests.
Activity
DwarFS measurements per issues #1/#2: lite uruntime default, full-uru…
probonopd commentedon Oct 9, 2026
Here we are getting into the territory of the objectives of a compression scheme. You can see the criteria and weights I have applied. These are key aspects I care about in an AppImage compression scheme, and I would assume many users will.
With current RAM prices and people being forced to squeeze as much as possible into as little RAM as possible, this is wasteful and should imho be changed to use the minimal amount of RAM one can get away with, to leave as much as free RAM as possible to the applications.
Samueru-sama commentedon Oct 9, 2026
That's not wasteful, it is making correct use of resources to improve the user experience. These stuff have alraedy been tested on ancient systems and they perform better than squashfs.
AppImage has been commonly criticized for its slow launch times, dwarfs fixes this problem while keeping it small. I mean without even talking about dwarfs, the recommendation here is squashfs zstd7 and 128K blocks??? That's going to produce fatter appimages than the default settings your appimagetool lol
If anything people run into disk space issues, I actually have this problem right now on my system, and there are systems out there like the 64GiB version of the steamdeck that people use.
Modern linux already pulls miracles with ram management without any sort of disk swap, just watch this video: https://www.youtube.com/watch?v=nMYTBsjeoTc
Samueru-sama commentedon Oct 9, 2026
pkgforge-dev/Anylinux-appimagetool#38
Samueru-sama commentedon Oct 10, 2026
@probonopd
The readme now states this:
The rationale is wrong, the reason RSS is higher still is due to DWARFS_READAHEAD. testing locally:
DWARFS_READAHEAD=0I need to test launch time with and without readahead, but right now it seems readahead actually hurts than help, before it used to help but dwarfs and the uruntime have changed a lot since then (like the case hotness list no longer having a measurable impact for example).
probonopd commentedon Oct 10, 2026
@Samueru-sama thanks for looking into this. I am happy to re-run the tests if you can tell me how exactly to run/configure uruntime and/or DwarFS. Thanks!
Samueru-sama commentedon Oct 10, 2026
Two things:
-S26 -B6is no longer used, instead-S26 -B2is prefered instead, why? Because when theDWARFS_CACHESIZEgets down to 128M throughput drops to 60 MB/s with-B6which is bad, however with-B2it just drops to 158MB/s which is still a significant impact on performance but not that terrible.Dwarfs RSS is not higher because "it also holds metadata and decompression buffers", if you compare dwarfs vs squashfs both using 1MB blocks, RSS will be similar as long as
DWARFS_READAHEADis set to0.Caveat, both of these things were done with local tests, it is not guranteed this will translate to the CI tests.