Skip to content

Conversation

@fogti
Copy link
Contributor

@fogti fogti commented Nov 22, 2025

Fixes #2009.

fn thin_tree_to_vfs_node(thin_tree: ThinTree<'static>, t: timespec) -> io::Result<Box<dyn VfsNode + Send + Sync>> {
Ok(match thin_tree {
ThinTree::File { content, metadata } => {
let mut st_mode = AccessPermission::S_IRUSR;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

TODO: what file permissions should we actually set?

@fogti fogti force-pushed the tarfs branch 4 times, most recently from 1740249 to 0538d8c Compare November 30, 2025 20:07
@fogti fogti force-pushed the tarfs branch 2 times, most recently from a6b91a5 to 877ad8a Compare December 5, 2025 12:30
@fogti
Copy link
Contributor Author

fogti commented Dec 5, 2025

It should now be possible to test this. Beware that the kernel doesn't support non-UTF-8 file names for in-memory filesystems, i.e. also for tarfs from the image. Of course, because it depends on unreleased hermit-entry features, this PR continues to be marked as Draft.

Copy link
Contributor

@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

Benchmark Current: b5f11b4 Previous: 3448d37 Performance Ratio
startup_benchmark Build Time 135.73 s 119.62 s 1.13
startup_benchmark File Size 0.93 MB 0.87 MB 1.06
Startup Time - 1 core 0.98 s (±0.03 s) 0.95 s (±0.04 s) 1.03
Startup Time - 2 cores 0.99 s (±0.02 s) 0.97 s (±0.03 s) 1.02
Startup Time - 4 cores 1.00 s (±0.02 s) 0.97 s (±0.02 s) 1.03
multithreaded_benchmark Build Time 120.70 s 113.78 s 1.06
multithreaded_benchmark File Size 1.03 MB 0.97 MB 1.06
Multithreaded Pi Efficiency - 2 Threads 88.27 % (±8.45 %) 92.22 % (±8.48 %) 0.96
Multithreaded Pi Efficiency - 4 Threads 44.21 % (±4.03 %) 45.04 % (±3.35 %) 0.98
Multithreaded Pi Efficiency - 8 Threads 25.37 % (±2.12 %) 25.58 % (±1.95 %) 0.99
micro_benchmarks Build Time 135.58 s 303.95 s 0.45
micro_benchmarks File Size 1.03 MB 0.98 MB 1.06
Scheduling time - 1 thread 72.07 ticks (±3.22 ticks) 182.85 ticks (±32.23 ticks) 0.39
Scheduling time - 2 threads 40.94 ticks (±5.36 ticks) 103.39 ticks (±16.71 ticks) 0.40
Micro - Time for syscall (getpid) 4.18 ticks (±0.41 ticks) 11.15 ticks (±6.24 ticks) 0.37
Memcpy speed - (built_in) block size 4096 62863.73 MByte/s (±44720.89 MByte/s) 60205.86 MByte/s (±43618.30 MByte/s) 1.04
Memcpy speed - (built_in) block size 1048576 28851.51 MByte/s (±23827.23 MByte/s) 13975.87 MByte/s (±11672.94 MByte/s) 2.06
Memcpy speed - (built_in) block size 16777216 24765.03 MByte/s (±20729.71 MByte/s) 9826.16 MByte/s (±7916.47 MByte/s) 2.52
Memset speed - (built_in) block size 4096 63441.08 MByte/s (±45103.08 MByte/s) 60474.85 MByte/s (±43816.42 MByte/s) 1.05
Memset speed - (built_in) block size 1048576 29598.06 MByte/s (±24265.06 MByte/s) 14295.75 MByte/s (±11832.01 MByte/s) 2.07
Memset speed - (built_in) block size 16777216 25547.65 MByte/s (±21245.86 MByte/s) 10017.30 MByte/s (±8016.98 MByte/s) 2.55
Memcpy speed - (rust) block size 4096 57068.95 MByte/s (±42237.42 MByte/s) 55192.10 MByte/s (±39638.51 MByte/s) 1.03
Memcpy speed - (rust) block size 1048576 28713.74 MByte/s (±23852.01 MByte/s) 14842.50 MByte/s (±12990.89 MByte/s) 1.93
Memcpy speed - (rust) block size 16777216 24856.55 MByte/s (±21004.75 MByte/s) 9597.76 MByte/s (±7698.93 MByte/s) 2.59
Memset speed - (rust) block size 4096 57773.42 MByte/s (±42716.68 MByte/s) 55757.62 MByte/s (±40074.28 MByte/s) 1.04
Memset speed - (rust) block size 1048576 29461.36 MByte/s (±24281.46 MByte/s) 15091.90 MByte/s (±13083.72 MByte/s) 1.95
Memset speed - (rust) block size 16777216 25633.77 MByte/s (±21502.21 MByte/s) 9826.75 MByte/s (±7835.95 MByte/s) 2.61
alloc_benchmarks Build Time 109.18 s 299.17 s 0.36
alloc_benchmarks File Size 1.00 MB 0.95 MB 1.06
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 7014.62 Ticks (±805.59 Ticks) 17635.82 Ticks (±3715.17 Ticks) 0.40
Allocations - Average Allocation time (no fail) 7014.62 Ticks (±805.59 Ticks) 17635.82 Ticks (±3715.17 Ticks) 0.40
Allocations - Average Deallocation time 853.02 Ticks (±334.40 Ticks) 3349.50 Ticks (±849.89 Ticks) 0.25
mutex_benchmark Build Time 113.91 s 298.66 s 0.38
mutex_benchmark File Size 1.03 MB 0.97 MB 1.06
Mutex Stress Test Average Time per Iteration - 1 Threads 13.16 ns (±0.70 ns) 39.12 ns (±3.92 ns) 0.34
Mutex Stress Test Average Time per Iteration - 2 Threads 14.06 ns (±0.95 ns) 31.42 ns (±3.51 ns) 0.45

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

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.

Investigate tarfs support (as part of image support)

1 participant