Skip to content

Conversation

cagatay-y
Copy link
Contributor

Make the buffer size used when MRG_RXBUF is negotiated configurable and configure it to a small value when HERMIT_CAREFUL is enabled to test if the feature is working.

@cagatay-y cagatay-y force-pushed the mrgbuf-test branch 2 times, most recently from 5dd9041 to 848d075 Compare June 27, 2025 12:29
@cagatay-y cagatay-y closed this Jun 27, 2025
@cagatay-y cagatay-y reopened this Jun 27, 2025
@mkroening mkroening self-requested a review June 27, 2025 21:54
@mkroening mkroening self-assigned this Jun 27, 2025
@cagatay-y cagatay-y marked this pull request as draft July 2, 2025 12:15
It is possible to set a receive buffer size when MRG_RXBUF is
negotiated. Expose this ability to the user through the environment
variable `HERMIT_MRG_RXBUF_SIZE`.
In order to ensure that the buffer merging works, make the receive
buffers smaller in a CI step. Note, however, that this does not check if
the MRG_RXBUF is available for the step. If it's not, the environment
variable will have no effect.
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: cdde3c1 Previous: ee6e5d2 Performance Ratio
startup_benchmark Build Time 135.44 s 135.29 s 1.00
startup_benchmark File Size 0.90 MB 0.90 MB 1.00
Startup Time - 1 core 0.92 s (±0.02 s) 0.93 s (±0.02 s) 0.99
Startup Time - 2 cores 0.93 s (±0.02 s) 0.94 s (±0.02 s) 0.99
Startup Time - 4 cores 0.94 s (±0.02 s) 0.97 s (±0.02 s) 0.98
multithreaded_benchmark Build Time 131.67 s 141.88 s 0.93
multithreaded_benchmark File Size 1.00 MB 1.00 MB 1.00
Multithreaded Pi Efficiency - 2 Threads 2.61 % (±12.54 %) 2.83 % (±13.59 %) 0.92
Multithreaded Pi Efficiency - 4 Threads 1.56 % (±7.48 %) 1.60 % (±7.68 %) 0.97
Multithreaded Pi Efficiency - 8 Threads 0.77 % (±3.70 %) 0.78 % (±3.74 %) 0.99
micro_benchmarks Build Time 207.15 s 195.06 s 1.06
micro_benchmarks File Size 1.01 MB 1.01 MB 1.00
Scheduling time - 1 thread 2.63 ticks (±12.64 ticks) 3.06 ticks (±14.68 ticks) 0.86
Scheduling time - 2 threads 1.36 ticks (±6.52 ticks) 1.58 ticks (±7.57 ticks) 0.86
Micro - Time for syscall (getpid) 0.17 ticks (±0.79 ticks) 0.16 ticks (±0.79 ticks) 1.01
Memcpy speed - (built_in) block size 4096 1531.86 MByte/s (±7352.94 MByte/s) 1680.11 MByte/s (±8064.52 MByte/s) 0.91
Memcpy speed - (built_in) block size 1048576 735.20 MByte/s (±3528.96 MByte/s) 559.39 MByte/s (±2685.09 MByte/s) 1.31
Memcpy speed - (built_in) block size 16777216 220.23 MByte/s (±1057.10 MByte/s) 201.86 MByte/s (±968.91 MByte/s) 1.09
Memset speed - (built_in) block size 4096 1621.62 MByte/s (±7783.78 MByte/s) 1518.99 MByte/s (±7291.14 MByte/s) 1.07
Memset speed - (built_in) block size 1048576 976.06 MByte/s (±4685.10 MByte/s) 1283.86 MByte/s (±6162.54 MByte/s) 0.76
Memset speed - (built_in) block size 16777216 951.15 MByte/s (±4565.50 MByte/s) 869.39 MByte/s (±4173.09 MByte/s) 1.09
Memcpy speed - (rust) block size 4096 1176.47 MByte/s (±5647.06 MByte/s) 685.71 MByte/s (±3291.43 MByte/s) 1.72
Memcpy speed - (rust) block size 1048576 762.50 MByte/s (±3660.00 MByte/s) 547.47 MByte/s (±2627.87 MByte/s) 1.39
Memcpy speed - (rust) block size 16777216 220.32 MByte/s (±1057.53 MByte/s) 206.17 MByte/s (±989.64 MByte/s) 1.07
Memset speed - (rust) block size 4096 1643.84 MByte/s (±7890.41 MByte/s) 1304.35 MByte/s (±6260.87 MByte/s) 1.26
Memset speed - (rust) block size 1048576 965.86 MByte/s (±4636.11 MByte/s) 1280.41 MByte/s (±6145.97 MByte/s) 0.75
Memset speed - (rust) block size 16777216 923.11 MByte/s (±4430.91 MByte/s) 881.11 MByte/s (±4229.33 MByte/s) 1.05
alloc_benchmarks Build Time 203.26 s 186.50 s 1.09
alloc_benchmarks File Size 0.97 MB 0.97 MB 1.00
Allocations - Allocation success 2.00 % (±13.86 %) 2.00 % (±13.86 %) 1
Allocations - Deallocation success 1.40 % (±9.72 %) 1.39 % (±9.66 %) 1.01
Allocations - Pre-fail Allocations 2.00 % (±13.86 %) 2.00 % (±13.86 %) 1
Allocations - Average Allocation time 228.77 Ticks (±1585.27 Ticks) 241.20 Ticks (±1671.42 Ticks) 0.95
Allocations - Average Allocation time (no fail) 228.77 Ticks (±1585.27 Ticks) 241.20 Ticks (±1671.42 Ticks) 0.95
Allocations - Average Deallocation time 15.97 Ticks (±110.70 Ticks) 16.83 Ticks (±116.64 Ticks) 0.95
mutex_benchmark Build Time 208.41 s 186.85 s 1.12
mutex_benchmark File Size 1.01 MB 1.01 MB 1.00
Mutex Stress Test Average Time per Iteration - 1 Threads 0.28 ns (±1.94 ns) 0.34 ns (±2.36 ns) 0.82
Mutex Stress Test Average Time per Iteration - 2 Threads 0.42 ns (±2.91 ns) 0.36 ns (±2.49 ns) 1.17

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.

2 participants