Skip to content

feat(fs/mem): Tarfs for Hermit images implementation#2390

Open
fogti wants to merge 2 commits intohermit-os:mainfrom
fogti:tarfs-v2
Open

feat(fs/mem): Tarfs for Hermit images implementation#2390
fogti wants to merge 2 commits intohermit-os:mainfrom
fogti:tarfs-v2

Conversation

@fogti
Copy link
Copy Markdown
Contributor

@fogti fogti commented Apr 21, 2026

Currently untested. Supersedes #2077.

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark Results

Details
Benchmark Current: 38c05a2 Previous: 615429b Performance Ratio
startup_benchmark Build Time 88.24 s 89.51 s 0.99
startup_benchmark File Size 0.84 MB 0.80 MB 1.05
Startup Time - 1 core 0.81 s (±0.03 s) 0.81 s (±0.03 s) 1.00
Startup Time - 2 cores 0.81 s (±0.03 s) 0.82 s (±0.03 s) 0.99
Startup Time - 4 cores 0.80 s (±0.03 s) 0.82 s (±0.03 s) 0.98
multithreaded_benchmark Build Time 88.32 s 92.20 s 0.96
multithreaded_benchmark File Size 0.94 MB 0.91 MB 1.03
Multithreaded Pi Efficiency - 2 Threads 86.93 % (±7.98 %) 88.88 % (±7.29 %) 0.98
Multithreaded Pi Efficiency - 4 Threads 43.85 % (±2.89 %) 43.88 % (±3.08 %) 1.00
Multithreaded Pi Efficiency - 8 Threads 25.73 % (±1.96 %) 25.36 % (±1.50 %) 1.01
micro_benchmarks Build Time 93.65 s 99.93 s 0.94
micro_benchmarks File Size 0.94 MB 0.92 MB 1.03
Scheduling time - 1 thread 70.02 ticks (±4.23 ticks) 71.72 ticks (±4.05 ticks) 0.98
Scheduling time - 2 threads 38.12 ticks (±5.64 ticks) 41.38 ticks (±6.38 ticks) 0.92
Micro - Time for syscall (getpid) 3.62 ticks (±0.28 ticks) 3.03 ticks (±0.29 ticks) 1.20
Memcpy speed - (built_in) block size 4096 78092.95 MByte/s (±54255.47 MByte/s) 77965.54 MByte/s (±54063.23 MByte/s) 1.00
Memcpy speed - (built_in) block size 1048576 29983.51 MByte/s (±24383.83 MByte/s) 30200.06 MByte/s (±24888.67 MByte/s) 0.99
Memcpy speed - (built_in) block size 16777216 28480.42 MByte/s (±23487.01 MByte/s) 24462.68 MByte/s (±20453.66 MByte/s) 1.16
Memset speed - (built_in) block size 4096 77876.33 MByte/s (±54095.01 MByte/s) 78509.58 MByte/s (±54370.39 MByte/s) 0.99
Memset speed - (built_in) block size 1048576 30743.68 MByte/s (±24835.40 MByte/s) 30967.08 MByte/s (±25321.38 MByte/s) 0.99
Memset speed - (built_in) block size 16777216 29236.23 MByte/s (±23925.50 MByte/s) 25135.18 MByte/s (±20867.30 MByte/s) 1.16
Memcpy speed - (rust) block size 4096 69874.95 MByte/s (±48921.40 MByte/s) 66870.91 MByte/s (±46861.99 MByte/s) 1.04
Memcpy speed - (rust) block size 1048576 30071.41 MByte/s (±24564.90 MByte/s) 30187.98 MByte/s (±24852.29 MByte/s) 1.00
Memcpy speed - (rust) block size 16777216 28606.63 MByte/s (±23616.47 MByte/s) 25884.94 MByte/s (±21602.71 MByte/s) 1.11
Memset speed - (rust) block size 4096 70532.99 MByte/s (±49391.54 MByte/s) 67369.99 MByte/s (±47191.80 MByte/s) 1.05
Memset speed - (rust) block size 1048576 30834.68 MByte/s (±25004.41 MByte/s) 30949.74 MByte/s (±25278.89 MByte/s) 1.00
Memset speed - (rust) block size 16777216 29377.50 MByte/s (±24063.09 MByte/s) 26639.52 MByte/s (±22078.84 MByte/s) 1.10
alloc_benchmarks Build Time 92.62 s 91.57 s 1.01
alloc_benchmarks File Size 0.91 MB 0.87 MB 1.04
Allocations - Allocation success 100.00 % 100.00 % 1
Allocations - Deallocation success 100.00 % 100.00 % 1
Allocations - Pre-fail Allocations 100.00 % 100.00 % 1
Allocations - Average Allocation time 11776.32 Ticks (±243.82 Ticks) 8539.12 Ticks (±120.92 Ticks) 1.38
Allocations - Average Allocation time (no fail) 11776.32 Ticks (±243.82 Ticks) 8539.12 Ticks (±120.92 Ticks) 1.38
Allocations - Average Deallocation time 951.51 Ticks (±299.46 Ticks) 1672.89 Ticks (±188.54 Ticks) 0.57
mutex_benchmark Build Time 91.88 s 92.47 s 0.99
mutex_benchmark File Size 0.94 MB 0.91 MB 1.03
Mutex Stress Test Average Time per Iteration - 1 Threads 13.06 ns (±0.76 ns) 13.06 ns (±0.79 ns) 1.00
Mutex Stress Test Average Time per Iteration - 2 Threads 18.58 ns (±12.58 ns) 15.44 ns (±8.54 ns) 1.20

This comment was automatically generated by workflow using github-action-benchmark.

@fogti fogti force-pushed the tarfs-v2 branch 3 times, most recently from 250cae7 to 0cff0d2 Compare April 22, 2026 14:30
@fogti
Copy link
Copy Markdown
Contributor Author

fogti commented Apr 28, 2026

@mkroening Would it be possible to merge just part of this (namely the changes to src/fs/mem.rs, but not to other files in src)? That part is basically done. (And the rest suffers from memory management issues which I don't really know yet how to solve.) It would be nice to have a test for that, could I just add an example uncompressed tar archive to the repository for that and basically do something that amount essentially to snapshot testing (tho manual)?

@fogti fogti marked this pull request as ready for review April 29, 2026 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant