Skip to content

Conversation

@valopok
Copy link

@valopok valopok commented Sep 28, 2025

I added NVMe driver support by using an adapted version of the vroom driver.
Alongside this pull request, I will open another pull request in hermit-rs to add an example testing the driver.

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: e18e728 Previous: 0b7fc73 Performance Ratio
startup_benchmark Build Time 110.38 s 124.30 s 0.89
startup_benchmark File Size 0.86 MB 0.86 MB 1.00
Startup Time - 1 core 0.88 s (±0.03 s) 1.05 s (±0.02 s) 0.84
Startup Time - 2 cores 0.89 s (±0.03 s) 1.04 s (±0.03 s) 0.86
Startup Time - 4 cores 0.92 s (±0.04 s) 1.03 s (±0.02 s) 0.89
multithreaded_benchmark Build Time 112.48 s 126.23 s 0.89
multithreaded_benchmark File Size 0.96 MB 0.96 MB 1.00
Multithreaded Pi Efficiency - 2 Threads 88.15 % (±9.45 %) 84.80 % (±7.75 %) 1.04
Multithreaded Pi Efficiency - 4 Threads 43.40 % (±3.60 %) 42.45 % (±2.98 %) 1.02
Multithreaded Pi Efficiency - 8 Threads 25.29 % (±1.61 %) 24.52 % (±2.36 %) 1.03
micro_benchmarks Build Time 269.90 s 274.29 s 0.98
micro_benchmarks File Size 0.97 MB 0.97 MB 1.00
Scheduling time - 1 thread 151.59 ticks (±22.22 ticks) 148.36 ticks (±12.93 ticks) 1.02
Scheduling time - 2 threads 98.97 ticks (±16.66 ticks) 88.04 ticks (±13.54 ticks) 1.12
Micro - Time for syscall (getpid) 9.00 ticks (±4.20 ticks) 10.38 ticks (±5.26 ticks) 0.87
Memcpy speed - (built_in) block size 4096 54207.00 MByte/s (±40102.58 MByte/s) 56952.43 MByte/s (±41782.00 MByte/s) 0.95
Memcpy speed - (built_in) block size 1048576 14882.60 MByte/s (±12012.19 MByte/s) 15647.95 MByte/s (±12805.19 MByte/s) 0.95
Memcpy speed - (built_in) block size 16777216 11040.15 MByte/s (±8996.52 MByte/s) 11222.99 MByte/s (±9160.99 MByte/s) 0.98
Memset speed - (built_in) block size 4096 54611.11 MByte/s (±40392.92 MByte/s) 57346.55 MByte/s (±42024.24 MByte/s) 0.95
Memset speed - (built_in) block size 1048576 15266.09 MByte/s (±12240.59 MByte/s) 16072.80 MByte/s (±13089.20 MByte/s) 0.95
Memset speed - (built_in) block size 16777216 11216.34 MByte/s (±9076.36 MByte/s) 11485.66 MByte/s (±9311.28 MByte/s) 0.98
Memcpy speed - (rust) block size 4096 53535.93 MByte/s (±39338.23 MByte/s) 56725.21 MByte/s (±40857.65 MByte/s) 0.94
Memcpy speed - (rust) block size 1048576 15169.73 MByte/s (±12220.52 MByte/s) 15912.94 MByte/s (±12954.57 MByte/s) 0.95
Memcpy speed - (rust) block size 16777216 11109.98 MByte/s (±9047.33 MByte/s) 11044.74 MByte/s (±8978.39 MByte/s) 1.01
Memset speed - (rust) block size 4096 54501.80 MByte/s (±39992.32 MByte/s) 57139.62 MByte/s (±41108.43 MByte/s) 0.95
Memset speed - (rust) block size 1048576 15444.76 MByte/s (±12366.77 MByte/s) 16296.05 MByte/s (±13185.87 MByte/s) 0.95
Memset speed - (rust) block size 16777216 11293.89 MByte/s (±9132.20 MByte/s) 11283.59 MByte/s (±9110.64 MByte/s) 1.00
alloc_benchmarks Build Time 265.29 s 276.44 s 0.96
alloc_benchmarks File Size 0.92 MB 0.92 MB 1.00
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 17277.93 Ticks (±618.42 Ticks) 17424.87 Ticks (±622.62 Ticks) 0.99
Allocations - Average Allocation time (no fail) 17277.93 Ticks (±618.42 Ticks) 17424.87 Ticks (±622.62 Ticks) 0.99
Allocations - Average Deallocation time 2156.44 Ticks (±446.74 Ticks) 2128.52 Ticks (±372.69 Ticks) 1.01
mutex_benchmark Build Time 267.07 s 281.32 s 0.95
mutex_benchmark File Size 0.97 MB 0.97 MB 1.00
Mutex Stress Test Average Time per Iteration - 1 Threads 32.48 ns (±3.06 ns) 33.54 ns (±3.06 ns) 0.97
Mutex Stress Test Average Time per Iteration - 2 Threads 27.10 ns (±2.96 ns) 28.50 ns (±2.47 ns) 0.95

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

@valopok valopok marked this pull request as draft September 28, 2025 14:35
@valopok valopok marked this pull request as ready for review October 2, 2025 14:59
@mkroening mkroening self-assigned this Oct 2, 2025
@jounathaen
Copy link
Member

Hi @valopok and thank you for the contribution.
This is an interesting idea. Yet, I'm a little unsure, if this fit's the goals of Hermit, as I personally also see a value in keeping the codebase as small as possible. So, could you maybe give us a little motivation for the addition of this driver?

I'd also be curious, if it could alternatively be implemented outside the kernel and which interfaces to the kernel are missing if it isn't possible at the moment.

@stlankes stlankes self-assigned this Nov 20, 2025
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.

4 participants