Skip to content

Conversation

@n0toose
Copy link
Member

@n0toose n0toose commented Jan 23, 2026

On x86_64, the data address will be stored in the rcx register to support 64-bit addresses.

This also removes the usage of ExitArgs, as it is a single integer.

Helped-by: Jonathan Klimt jonathan.klimt@eonerc.rwth-aachen.de

@n0toose
Copy link
Member Author

n0toose commented Jan 23, 2026

Succeeds #2013

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

Details
Benchmark Current: dfe0559 Previous: 3cd03d6 Performance Ratio
startup_benchmark Build Time 99.58 s 100.84 s 0.99
startup_benchmark File Size 0.87 MB 0.87 MB 1.01
Startup Time - 1 core 0.93 s (±0.04 s) 0.93 s (±0.03 s) 1.00
Startup Time - 2 cores 0.93 s (±0.03 s) 0.94 s (±0.03 s) 1.00
Startup Time - 4 cores 0.96 s (±0.03 s) 0.95 s (±0.03 s) 1.00
multithreaded_benchmark Build Time 99.94 s 100.39 s 1.00
multithreaded_benchmark File Size 0.97 MB 0.97 MB 1.01
Multithreaded Pi Efficiency - 2 Threads 85.90 % (±8.98 %) 87.95 % (±9.33 %) 0.98
Multithreaded Pi Efficiency - 4 Threads 42.03 % (±3.27 %) 43.47 % (±4.11 %) 0.97
Multithreaded Pi Efficiency - 8 Threads 24.61 % (±1.81 %) 25.22 % (±2.42 %) 0.98
micro_benchmarks Build Time 104.46 s 102.95 s 1.01
micro_benchmarks File Size 0.98 MB 0.97 MB 1.01
Scheduling time - 1 thread 67.10 ticks (±3.11 ticks) 67.76 ticks (±3.18 ticks) 0.99
Scheduling time - 2 threads 39.46 ticks (±6.55 ticks) 38.55 ticks (±4.67 ticks) 1.02
Micro - Time for syscall (getpid) 3.37 ticks (±0.41 ticks) 3.28 ticks (±0.46 ticks) 1.03
Memcpy speed - (built_in) block size 4096 65161.86 MByte/s (±45967.41 MByte/s) 66854.78 MByte/s (±47513.08 MByte/s) 0.97
Memcpy speed - (built_in) block size 1048576 29515.58 MByte/s (±24151.36 MByte/s) 29456.92 MByte/s (±24262.14 MByte/s) 1.00
Memcpy speed - (built_in) block size 16777216 27710.77 MByte/s (±23099.58 MByte/s) 25391.23 MByte/s (±21398.03 MByte/s) 1.09
Memset speed - (built_in) block size 4096 65084.39 MByte/s (±45925.01 MByte/s) 67572.37 MByte/s (±48042.01 MByte/s) 0.96
Memset speed - (built_in) block size 1048576 30275.42 MByte/s (±24591.55 MByte/s) 30174.03 MByte/s (±24654.07 MByte/s) 1.00
Memset speed - (built_in) block size 16777216 28093.49 MByte/s (±23237.87 MByte/s) 26167.90 MByte/s (±21892.89 MByte/s) 1.07
Memcpy speed - (rust) block size 4096 59200.78 MByte/s (±43786.46 MByte/s) 60927.86 MByte/s (±44852.89 MByte/s) 0.97
Memcpy speed - (rust) block size 1048576 29344.10 MByte/s (±24154.57 MByte/s) 29458.32 MByte/s (±24213.91 MByte/s) 1.00
Memcpy speed - (rust) block size 16777216 27089.73 MByte/s (±22591.82 MByte/s) 25620.96 MByte/s (±21555.28 MByte/s) 1.06
Memset speed - (rust) block size 4096 60272.74 MByte/s (±44523.63 MByte/s) 62100.91 MByte/s (±45643.48 MByte/s) 0.97
Memset speed - (rust) block size 1048576 30126.55 MByte/s (±24600.72 MByte/s) 30220.35 MByte/s (±24662.76 MByte/s) 1.00
Memset speed - (rust) block size 16777216 27426.32 MByte/s (±22709.01 MByte/s) 26401.04 MByte/s (±22047.35 MByte/s) 1.04
alloc_benchmarks Build Time 93.67 s 91.80 s 1.02
alloc_benchmarks File Size 0.94 MB 0.94 MB 1.01
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 7522.13 Ticks (±360.03 Ticks) 4850.42 Ticks (±182.11 Ticks) 1.55
Allocations - Average Allocation time (no fail) 7522.13 Ticks (±360.03 Ticks) 4850.42 Ticks (±182.11 Ticks) 1.55
Allocations - Average Deallocation time 901.00 Ticks (±113.88 Ticks) 703.38 Ticks (±17.35 Ticks) 1.28
mutex_benchmark Build Time 93.21 s 94.72 s 0.98
mutex_benchmark File Size 0.98 MB 0.97 MB 1.01
Mutex Stress Test Average Time per Iteration - 1 Threads 12.70 ns (±0.67 ns) 12.52 ns (±0.57 ns) 1.01
Mutex Stress Test Average Time per Iteration - 2 Threads 13.00 ns (±0.85 ns) 13.00 ns (±0.92 ns) 1.00

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

On x86_64, the data address will be stored in the rcx register
to support 64-bit addresses.

This also removes the usage of ExitArgs, as it is a single integer.

Co-authored-by: Ellen Εμιλία Άννα Zscheile <fogti+devel@ytrizja.de>
Helped-by: Jonathan Klimt <jonathan.klimt@eonerc.rwth-aachen.de>
@n0toose n0toose force-pushed the uhyve-v2-io-with-rcx branch from 6ad459d to dfe0559 Compare January 27, 2026 18:30
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