Skip to content

feat: bucketized futexes#2469

Open
zyuiop wants to merge 5 commits into
hermit-os:mainfrom
zyuiop:feat/bucketized-futexes
Open

feat: bucketized futexes#2469
zyuiop wants to merge 5 commits into
hermit-os:mainfrom
zyuiop:feat/bucketized-futexes

Conversation

@zyuiop

@zyuiop zyuiop commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

While tracking #2468, I initially suspected the futex lock to be an issue, so I applied the "Todo" and made a bucket list instead of the single lock.

I have based this off on #2468 so that we get performance results that make sense.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

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: 17f45b2 Previous: 28c7089 Performance Ratio
startup_benchmark Build Time 115.62 s 115.28 s 1.00
startup_benchmark File Size 0.76 MB 0.77 MB 0.99
Startup Time - 1 core 1.01 s (±0.04 s) 1.00 s (±0.03 s) 1.01
Startup Time - 2 cores 1.00 s (±0.03 s) 1.04 s (±0.05 s) 0.96
Startup Time - 4 cores 1.03 s (±0.04 s) 1.00 s (±0.06 s) 1.03
multithreaded_benchmark Build Time 117.39 s 118.33 s 0.99
multithreaded_benchmark File Size 0.83 MB 0.87 MB 0.95
Multithreaded Pi Efficiency - 2 Threads 91.15 % (±14.01 %) 92.34 % (±11.70 %) 0.99
Multithreaded Pi Efficiency - 4 Threads 44.07 % (±6.88 %) 45.83 % (±5.87 %) 0.96
Multithreaded Pi Efficiency - 8 Threads 24.19 % (±3.81 %) 25.71 % (±3.50 %) 0.94
micro_benchmarks Build Time 94.77 s 96.08 s 0.99
micro_benchmarks File Size 0.83 MB 0.88 MB 0.95
Scheduling time - 1 thread 70.61 ticks (±2.64 ticks) 73.85 ticks (±3.74 ticks) 0.96
Scheduling time - 2 threads 40.00 ticks (±4.69 ticks) 41.46 ticks (±4.37 ticks) 0.96
Micro - Time for syscall (getpid) 3.09 ticks (±0.21 ticks) 3.08 ticks (±0.19 ticks) 1.00
Memcpy speed - (built_in) block size 4096 76356.51 MByte/s (±52568.23 MByte/s) 73208.48 MByte/s (±50616.82 MByte/s) 1.04
Memcpy speed - (built_in) block size 1048576 29566.95 MByte/s (±24292.72 MByte/s) 29392.18 MByte/s (±24125.47 MByte/s) 1.01
Memcpy speed - (built_in) block size 16777216 23926.49 MByte/s (±19782.17 MByte/s) 23751.74 MByte/s (±19605.56 MByte/s) 1.01
Memset speed - (built_in) block size 4096 76444.90 MByte/s (±52631.26 MByte/s) 73313.38 MByte/s (±50689.78 MByte/s) 1.04
Memset speed - (built_in) block size 1048576 30313.77 MByte/s (±24725.25 MByte/s) 30169.43 MByte/s (±24587.38 MByte/s) 1.00
Memset speed - (built_in) block size 16777216 24563.36 MByte/s (±20173.88 MByte/s) 24402.29 MByte/s (±20008.02 MByte/s) 1.01
Memcpy speed - (rust) block size 4096 64317.79 MByte/s (±45253.03 MByte/s) 66427.37 MByte/s (±46490.49 MByte/s) 0.97
Memcpy speed - (rust) block size 1048576 29547.07 MByte/s (±24255.10 MByte/s) 29425.11 MByte/s (±24175.79 MByte/s) 1.00
Memcpy speed - (rust) block size 16777216 23909.16 MByte/s (±19744.41 MByte/s) 24403.77 MByte/s (±20179.96 MByte/s) 0.98
Memset speed - (rust) block size 4096 64549.86 MByte/s (±45435.32 MByte/s) 66262.32 MByte/s (±46403.75 MByte/s) 0.97
Memset speed - (rust) block size 1048576 30301.70 MByte/s (±24692.77 MByte/s) 30172.11 MByte/s (±24599.55 MByte/s) 1.00
Memset speed - (rust) block size 16777216 24600.19 MByte/s (±20193.99 MByte/s) 25069.95 MByte/s (±20590.63 MByte/s) 0.98
alloc_benchmarks Build Time 91.53 s 91.43 s 1.00
alloc_benchmarks File Size 0.84 MB 0.85 MB 0.99
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 4686.82 Ticks (±55.80 Ticks) 4633.96 Ticks (±62.19 Ticks) 1.01
Allocations - Average Allocation time (no fail) 4686.82 Ticks (±55.80 Ticks) 4633.96 Ticks (±62.19 Ticks) 1.01
Allocations - Average Deallocation time 939.06 Ticks (±136.29 Ticks) 683.28 Ticks (±99.25 Ticks) 1.37
mutex_benchmark Build Time 92.77 s 90.68 s 1.02
mutex_benchmark File Size 0.83 MB 0.88 MB 0.95
Mutex Stress Test Average Time per Iteration - 1 Threads 13.68 ns (±0.61 ns) 13.82 ns (±0.84 ns) 0.99
Mutex Stress Test Average Time per Iteration - 2 Threads 17.08 ns (±0.63 ns) 14.48 ns (±0.75 ns) 1.18

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.

1 participant